· 6 years ago · Sep 20, 2019, 03:42 AM
1Como estou criando um novo projeto, resolvi documentar um passo-a-passo de acordo com o WTTD para fácil e rápido o acesso em um único lugar.
2Esse tutorial considera que já foi feito o primeiro projeto e está com tudo instalado.
3
4Pode ser que tenha algum erro, pois comecei a fazer e depois fui anotando.
5Qualquer erro ou melhoria é só comentar.
6
7
8# Inicio
9
10No terminal fazer os seguintes comandos:
11
12```
13~$ mkdir projeto
14~$ cd projeto
15projeto$ python -m venv .projeto
16projeto$ source .projeto/bin/activate
17(.projeto) projeto$ pip install django
18(.projeto) projeto$ django-admin startproject projeto .
19(.projeto) projeto$ pip install python-decouple
20(.projeto) projeto$ pip install dj-database-url
21(.projeto) projeto$ pip install dj-static
22(.projeto) projeto$ pip install django-test-without-migrations
23(.projeto) projeto$ manage startapp core
24```
25Dentro do **PyCharm** em **Preferences** marcar a pasta `.projeto` como excluded para na hora de fazer busca por arquivos não aparecer um monte de arquivos que não aparecer essas dependências.
26
27
28Editar na `urls.py`:
29
30```diff
31+ from projeto.core import views
32
33urlpatterns = [
34+ path('', views.home),
35 path('admin/', admin.site.urls),
36]
37```
38Editar na `core/views.py`:
39```diff
40+ def home(request):
41+ return render(request, 'index.html')
42```
43
44Criar a pasta 'templates' dentro da pasta `core` e dentro de `core/templates` criar o arquivo `index.html`
45
46```html
47<!DOCTYPE html>
48<html lang="en">
49<head>
50 <meta charset="UTF-8">
51 <title>Title</title>
52</head>
53<body>
54<h1>Welcome to Projeto</h1>
55</body>
56</html>
57```
58
59Mudanças no `settings.py`:
60
61```diff
62+ from decouple import config, Csv
63+ from dj_database_url import parse as dburl
64
65
66+ SECRET_KEY = config('SECRET_KEY')
67- SECRET_KEY = <secret key gerada pelo projeto>
68
69- DEBUG = True
70+ DEBUG = config('DEBUG', default=False, cast=bool)
71- ALLOWED_HOSTS = []
72+ ALLOWED_HOSTS = config('ALLOWED_HOSTS', default=[], cast=Csv())
73
74
75INSTALLED_APPS = [
76 'django.contrib.admin',
77 'django.contrib.auth',
78 'django.contrib.contenttypes',
79 'django.contrib.sessions',
80 'django.contrib.messages',
81+ 'test_without_migrations',
82+ 'projeto.core',
83]
84
85
86
87- DATABASES = {
88- 'default': {
89- 'ENGINE': 'django.db.backends.sqlite3',
90- 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
91- }
92- }
93+ default_dburl = 'sqlite:///' + os.path.join(BASE_DIR, 'db.sqlite3')
94
95+ DATABASES = {
96+ 'default': config('DATABASE_URL', default=default_dburl, cast=dburl),
97+ }
98
99
100STATIC_URL = '/static/'
101+ STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
102```
103
104Criar um arquivo `.env` e copiar as variáveis do `settings.py` sem **espaço** e **aspas**:
105
106```
107SECRET_KEY=<sua SECRET_KEY>
108DEBUG=True
109ALLOWED_HOSTS=127.0.0.1,.localhost,.herokuapp.com
110```
111
112No arquivo `wsgi.py` mudar a linha abaixo:
113```git
114+ from dj_static import Cling
115
116- application = get_wsgi_application()
117+ application = Cling(get_wsgi_application())
118
119```
120
121No terminal:
122
123```
124(.projeto) projeto$ pip freeze > requirements.txt
125```
126
127## Configurar Git
128
129```
130(.projeto) projeto$ git init
131
132```
133Criar arquivo `.gitignore`, e **atenção** para colocar o seu **.projeto**
134```bash
135.projeto
136.env
137.idea
138*.sqlite3
139*pyc
140__pycache__
141staticfiles
142````
143
144## Configurar Heroku
145
146Editar o `requirements.txt`
147
148```diff
149dj-database-url==0.5.0
150dj-static==0.0.6
151Django==2.2.5
152python-decouple==3.1
153pytz==2019.2
154sqlparse==0.3.0
155static3==0.7.0
156+ gunicorn==19.9.0
157+ psycopg2==2.8.3
158```
159
160Criar arquivo `Procfile`, com apenas a linha abaixo e **atenção** para colocar **projeto**.wsgi:
161```
162web: gunicorn projeto.wsgi --log-file - :
163```
164
165Criando o projeto no Heroku e configurando as variáveis de ambiente:
166```
167(.projeto) projeto$ heroku apps:create seu-projeto
168(.projeto) projeto$ heroku config:set SECRET_KEY=‘<sua secret key>’
169(.projeto) projeto$ heroku config:set DEBUG=False
170(.projeto) projeto$ heroku config:set ALLOWED_HOSTS=.herokuapp.com
171```
172
173E para terminar é só adicionar no **git** fazer o **commit** e fazer o **push** pro **Heroku** e está no ar. :smiley: