Aula 05 – Criando uma primeira aplicação com Django no Windows (continuação)

Aula 05 – Curso básico de Django

Criando uma primeira aplicação com Django no Windows continuação.

Criando uma primeira aplicação com Django no windows

Criando uma primeira aplicação com Django no windows

Criando uma aplicação de pesquisas ou enquetes (polls)

Agora que o ambiente e um “projeto” estão configurados, você está pronto para começar.

Cada aplicativo que você escreve no Django consiste em um pacote Python que segue uma determinada convenção.

O Django vem com um utilitário que gera automaticamente a estrutura de diretórios básica de um aplicativo, para que você possa se concentrar em escrever o código ao invés de criar diretórios.

Projetos versus aplicativos

Qual a diferença entre um projeto e um app?

Um app é um aplicativo Web que faz algo – por exemplo, um sistema Weblog, um banco de dados de registros públicos ou um aplicativo de pesquisa simples.

Um projeto é uma coleção de configurações e aplicativos para um site específico.

Um projeto pode conter vários aplicativos. Um aplicativo pode estar em vários projetos.

Seus aplicativos podem ficar em qualquer lugar no path do Python.

Neste tutorial criaremos nosso aplicativo de pesquisa usando diretamente o arquivo manage.py do projeto mysite, para que possa ser importado como seu próprio módulo de nível superior, em vez de um submódulo de mysite.

Para criar o aplicativo, verifique se você está no mesmo diretório que manage.py e digite este comando:

python manage.py startapp polls

Isso criará arquivos e diretórios automaticamente:

polls/

    __init__.py

    admin.py

    apps.py

    migrations/

        __init__.py

        models.py

        tests.py

        views.py

Essa estrutura de diretório abrigará o app de pesquisa.

Agora vamos escrever uma View:

Abra o arquivo polls/views.py e insira o seguinte código Python nele:


from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

Esta é a view mais simples possível no Django.

Para chamar a view precisamos mapeá-la para um URL – e para isso precisamos de um URLconf.

Para criar um URLconf no diretório de polls, crie um arquivo chamado urls.py.

No arquivo polls/urls.py, inclua o seguinte código:


from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^$', views.index, name='index'),
]

O próximo passo é apontar para a raiz do URLconf no módulo polls.urls.

Em mysite/urls.py, adicione uma importação para django.conf.urls.include e insira um include () na lista urlpatterns, então o mysite/urls.py fica assim:


from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', admin.site.urls),
]

Para a função url () são passados quatro argumentos, dois necessários: regex e view, e dois opcionais: kwargs e name.

Neste ponto, vale a pena analisar o que são esses argumentos.

Regex (primeiro argumento de url()):

o termo “regex” é uma forma curta comumente usada que significa “expressão regular”, que é uma sintaxe para combinar padrões em strings, neste caso, padrões de url. O Django começa na primeira expressão regular e segue o caminho para baixo, comparando a URL solicitada com cada expressão regular até encontrar um que corresponda.

A função include () permite referenciar outros URLconfs.

Observe que as expressões regulares para a função include () não possuem $ (character  de fim-de-string), mas sim uma barra diagonal.

Sempre que o Django encontra um include (), ele escolhe qualquer parte do URL correspondente até esse ponto e envia a sequência restante ao URLconf incluído para posterior processamento.

Observe que essas expressões regulares não pesquisam parâmetros GET e POST, nem o nome de domínio.

Por exemplo, em uma solicitação para:

https://www.example.com/myapp/

O URLconf procurará myapp /

Em uma solicitação para:

https://www.example.com/myapp/?page=3

O URLconf também procurará myapp /

As expressões regulares são compiladas na primeira vez que o módulo URLconf é carregado. Eles são super rápidos (desde que as pesquisas não sejam muito complexas).

A idéia por trás include () é usar URLs plug-and-play.

Uma vez que as pesquisas estão em seu próprio URLconf (polls/urls.py), elas podem ser colocadas em “/polls/”, ou em “/fun_polls/”, ou em “/content/polls /” ou qualquer outra raiz do caminho e o aplicativo continuará ainda funcionando.

view (segundo argumento da url()):

Quando o Django encontra uma correspondência de expressão regular, o Django chama a função view especifica, com um objeto HttpRequest como o primeiro argumento e quaisquer valores “capturados” da expressão regular como outros argumentos.

Se o regex usa capturas simples, os valores são passados como argumentos posicionais;

Se ele usa capturas por nome, os valores são passados como argumentos de palavras-chave.

kwargs (terceiro argumento de url(), é opcional):

Os argumentos arbitrários de palavras-chave podem ser passados em um dicionário para a view de destino.

name (quarto argumento de url(), é opcional):

Nomear sua URL permite que você referencie ela de forma inequívoca de qualquer lugar no Django especialmente nos templates.
Este poderoso recurso permite que você faça alterações globais nos padrões de URL (URL patterns) do seu projeto alterando apenas um único arquivo.

Quando usar o include ()?

Quando você incluir outros URLs patterns.

admin.site.urls é a única exceção para isso (não precisa usar o include).

Você já conectou um index view no URLconf, vamos verificar se está funcionando, execute o seguinte comando:

python manage.py runserver

Acesse no seu navegador:

http://localhost:8000/polls/

Você deverá ver o texto “Hello, world. You’re at the polls index. “, que você definiu no index view.

Obrigado

Até a próxima

2 thoughts on “Aula 05 – Criando uma primeira aplicação com Django no Windows (continuação)

  1. Diogo

    Olá, Gostaria de uma ajuda.
    tento fazer igual o vídeo, porém aparece um erro quando tento subir o servidor. Tem algum email que possa enviar o erro para você verificar?[
    obrigado pela atenção.

    1. toticavalcanti Post author

      Olá Diogo, já te passei o email. Abs. Toti

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *