Esse é o primeiro post do Curso django na prática onde você aprenderá tudo que precisa para criar um sistema web :D
Utilizaremos a versão 1.8 do Django com Python 3!
Requisitos
- Linux (Ubuntu)
- Python 3.X
- Virtualenv
- pip
Se precisar de ajuda para instalar o pip, você pode utilizar esse tutorial.
Convenções
$ indica que comando deve ser executado no terminal do Linux
>>> indica que comando deve ser executado pelo interpretador Python em modo interativo
Instalação
Ative seu virtualenv e instale o Django na versão 1.8:
$ pip install "django>=1.8,<1.9"
Se tiver alguma duvida, você pode olhar na documentação como instalar o framework.
Para verificar se está tudo certo, abra o interpretador python e verifique a versão do Django:
>>> import django
>>> print(django.get_version())
1.8.5
Isso é tudo que precisamos para começar =)
django-admin.py
o django-admin.py é um script de linha de comando do Django que nos oferece vários comandos administrativos.
Existem várias opções, para visualizar todas basta executar:
$ django-admin.py help
Alguns parâmetros importantes são --pythonpath e --settings.
- Como vamos criar nosso projeto do zero, precisamos informar onde nossos módulos estarão localizados e para isso utilizaremos o parâmetro --pythonpath.
- Precisamos informar ao Django onde encontrar nossas configurações e para isso utilizaremos o parâmetro --settings.
Configurando o ambiente
Crie um arquivo chamado helloworld.py:
$ touch helloworld.py
Criamos nosso arquivo e agora vamos rodar o ambiente de desenvolvimento do Django :D
$ django-admin.py runserver --pythonpath=. --settings=helloworld
Dessa forma, estamos dizendo ao Django que nossos arquivos estão no diretório atual e que nossas configurações estão no arquivo heloworld (não devemos informar a extensão do arquivo no parâmetro).
Puts, ocorreu um erro!
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
Atualmente o Django não inicia sem a SECRET_KEY configurada. Precisamos adiciona-la ao nosso arquivo.
Abra o arquivo helloworld.py e insira uma SECRET_KEY qualquer:
SECRET_KEY='helloworld'
Para ambiente de teste não existe nenhum problema em deixar nossa SECRET_KEY com esse valor, porém para o ambiente de produção é necessário que seja um valor randômico. A SECRET_KEY é utilizada em diversas partes do Django para criar hashes e encriptar chaves. Por esse fato, você NUNCA DEVE deixar pública o valor de SECRET_KEY utilizado em ambientes de produção. Mais informações aqui.
Executando novamente nosso ambiente, teremos o seguinte erro:
$ django-admin.py runserver --pythonpath=. --settings=helloworld
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
Como estamos em ambiente de desenvolvimento, precisamos utilizar o DEBUG como True, somente para produção que ele será desativado.
Nosso arquivo helloworld.py agora está assim:
SECRET_KEY='helloworld'
DEBUG = True
Com isso já é possível subir o ambiente de desenvolvimento.
$ django-admin.py runserver --pythonpath=. --settings=helloworld
Performing system checks...
System check identified some issues:
WARNINGS:
?: (1_7.W001) MIDDLEWARE_CLASSES is not set.
HINT: Django 1.7 changed the global defaults for the MIDDLEWARE_CLASSES. django.contrib.sessions.middleware.SessionMiddleware, django.contrib.auth.middleware.AuthenticationMiddleware, and django.contrib.messages.middleware.MessageMiddleware were removed from the defaults. If your project needs these middleware then you should configure this setting.
System check identified 1 issue (0 silenced).
September 26, 2015 - 08:50:09
Django version 1.8.5, using settings 'helloworld'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Pronto! Nosso ambiente já está rodando na porta 8000, abra seu navegador e digite http://127.0.0.1:8000/.
Hello World
Ok, nosso ambiente está rodando, porém ainda temos erros. O que aconteceu?
Se você visualizar no terminal onde o ambiente está sendo executado, verá a seguinte mensagem:
AttributeError: 'Settings' object has no attribute 'ROOT_URLCONF'
Para encontrar as views que serão renderizadas no projeto, o Django procura primeiro as configurações no arquivo apontado pelo ROOT_URLCONF.
- uma view é uma função responsável por retornar algo para ser renderizado no browser, pode ser um html, um arquivo, um json e etc.
Como toda nossa aplicação ficará por enquanto no arquivo helloworld.py, vamos apontar nosso ROOT_URLCONF para ele.
Abra o arquivo helloworld.py e insira o seguinte código:
SECRET_KEY = 'helloworld'
DEBUG = True
ROOT_URLCONF = __name__
Estamos dizendo ao Django que nossas urls estão nesse arquivo, para reconhecer as urls, o django procura pela variável urlpatterns.
Logo, nosso arquivo deve ficar assim:
SECRET_KEY = 'helloworld'
DEBUG = True
ROOT_URLCONF = __name__
urlpatterns = []
Agora, se abrirmos nosso navegador no endereço http://127.0.0.1:8000/ já recebemos a página de bem vindo do Django =DDD
Nossa primeira view
Agora sim, tudo está pronto para criarmos nossa primeira view!
Vamos criar nossa view chamada hello_world, toda view recebe como primeiro o request, e precisa retornar alguma resposta para o navegador, vamos retornar um HttpResponse com o texto Django na prática - Hello World!
Modifique seu helloworld.py para que fique assim:
from django.http import HttpResponse
SECRET_KEY = 'helloworld'
DEBUG = True
ROOT_URLCONF = __name__
def hello_world(request):
return HttpResponse('Django na prática - Hello World!')
urlpatterns = []
Pronto! Temos nossa view criada, porém ainda não conseguimos acessá-la. Precisamos dizer ao framework como essa view pode ser encontrada e para qual url ela deve responder.
Façamos dessa forma:
from django.conf.urls import url
from django.http import HttpResponse
SECRET_KEY = 'helloworld'
DEBUG = True
ROOT_URLCONF = __name__
def hello_world(request):
return HttpResponse('Django na prática - Hello World!')
urlpatterns = [
url(r'^$', hello_world)
]
Dentro do urlpatterns nós informamos quais são as urls disponíveis no nosso projeto. Fazemos isso usando utilizado uma expressão regular associada à uma função, que no nosso caso é o hello_world.
Agora, se abrirmos o navegador, iremos nos deparar com o seguinte resultado:
Por hoje é isso!!! Guarde o arquivo criado hoje, pois ele será utilizado nas próximas aulas!
Até a próxima =)
"Django na prática - Hello World" de "Lucas Magnum" está licenciado com uma Licença Creative Commons - Atribuição-NãoComercial-SemDerivações 4.0 Internacional.