Django Criar Aplicativo

Resumo : neste tutorial, você aprenderá como criar uma nova aplicação em um projeto Django, como definir visualizações e mapear as visualizações com URLs.

Este tutorial começa onde o tutorial Introdução ao Django parou.

Projetos e aplicativos Django

Na estrutura Django:

  • Um projeto é uma instalação do Django com algumas configurações.
  • Um aplicativo é um grupo de modelos, visualizações, modelos e URLs.

Um projeto Django pode ter uma ou mais aplicações. Por exemplo, um projeto é como um site que pode consistir em vários aplicativos, como blogs, usuários e wikis.

Normalmente, você projeta um aplicativo Django que pode ser reutilizável em outros projetos Django. A figura a seguir mostra a estrutura de um projeto Django e suas aplicações:

Criando um aplicativo de blog

Para criar um aplicativo, você usa o startappcomando da seguinte forma:

python manage.py startapp app_nameLinguagem de código:  CSS  ( css )

Por exemplo, você pode criar um aplicativo chamado blogusando o startappcomando como este:

python manage.py startapp blogLinguagem de código:  CSS  ( css )

O comando cria um blogdiretório com alguns arquivos:

├── blog
|  ├── admin.py
|  ├── apps.py
|  ├── migrations
|  ├── models.py
|  ├── tests.py
|  ├── views.py
|  └── __init__.py
├── db.sqlite3
├── django_project
|  ├── asgi.py
|  ├── settings.py
|  ├── urls.py
|  ├── wsgi.py
|  ├── __init__.py
|  └── __pycache__
└── manage.pyLinguagem de código:  texto simples  ( texto simples )

Registrando um aplicativo

Depois de criar um aplicativo, você precisa registrá-lo no projeto, especialmente quando o aplicativo usa modelos e interage com um banco de dados.

O blogaplicativo possui o apps.pymódulo que contém a BlogConfigclasse assim:

from django.apps import AppConfig


class BlogConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'blog'Linguagem de código:  Python  ( python )

Para registrar o blogaplicativo, você adiciona a blog.apps.BlogConfigclasse à INSTALLED_APPSlista settings.pydo projeto:

INSTALLED_APPS = [
     # ...
    'blog.apps.BlogConfig',
]
Linguagem de código:  Python  ( python )

Alternativamente, você pode usar o nome do aplicativo como blogna INSTALLED_APPSlista assim:

INSTALLED_APPS = [
     # ...
    'blog',
]Linguagem de código:  Python  ( python )

Criando uma visualização

O views.pyarquivo no blogdiretório vem com o seguinte código padrão:

from django.shortcuts import render

# Create your views here.Linguagem de código:  Python  ( python )

O views.py conterá todas as visualizações do aplicativo. Uma visão é uma função que pega um HttpRequestobjeto e retorna um HttpResponseobjeto. É equivalente ao controlador na arquitetura MVC.

Para criar uma nova visualização, você importa HttpResponsepara django.httpo views.pyarquivo e define uma nova função que aceita uma instância da HttpRequestclasse:

from django.shortcuts import render
from django.http import HttpResponse


def home(request):
    return HttpResponse('<h1>Blog Home</h1>')
Linguagem de código:  Python  ( python )

Neste exemplo, a home()função retorna um novo HttpResponseobjeto que contém um trecho de código HTML. O código HTML inclui uma h1tag.

A home()função aceita uma instância de um HttpRequestobjeto e retorna um HttpResponseobjeto. É chamada de visualização baseada em função. Posteriormente, você aprenderá como criar visualizações baseadas em classes.

Para mapear uma URL com a home()função, você cria um novo arquivo urls.pydentro do blogdiretório e adiciona o seguinte código ao urls.pyarquivo:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='posts'),
]
Linguagem de código:  Python  ( python )

Como funciona.

Primeiro, importe o módulo pathfrom :django.urls

from django.urls import pathLinguagem de código:  Python  ( python )

Segundo, importe o views.pymódulo do diretório atual.

from . import viewsLinguagem de código:  Python  ( python )

Observe que esta é uma importação relativa que importa o viewsmódulo do diretório atual.

Terceiro, defina uma rota que mapeie a URL do blog com a home()função usando a path()função.

urlpatterns = [
    path('', views.home, name='posts'),
]
Linguagem de código:  Python  ( python )

O nameargumento da palavra-chave define o nome da rota. Posteriormente, você poderá referenciar o URL usando o nome da rota em vez do URL codificado, como blog/.

Ao usar o nome do caminho, você pode alterar o URL do caminho para algo como my-blog/em, urls.pyem vez de alterar o URL codificado em qualquer lugar.

Observe que o argumento final do caminho deve ser um argumento de palavra-chave como name='posts'. Se você usar um argumento posicional como este:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, 'posts'), # Error
]

Linguagem de código:  Python  ( python )

você receberá o seguinte erro:

TypeError: kwargs argument must be a dict, but got str.Linguagem de código:  texto simples  ( texto simples )

Para que as rotas do blog funcionem, você precisa incluir o urls.pyda blogaplicação no urls.pyarquivo do projeto Django:

from django.contrib import admin
from django.urls import path, include # new


urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')), # new
]
Linguagem de código:  Python  ( python )

No urls.pyprojeto, importamos a includefunção do django.urlse mapeamos o caminho do blog para o arquivo blog.urls.

Fazendo isso, ao navegar para http://127.0.0.1:8000/blog/, o Django executará a home()função do views.pymódulo e retornará uma página web que exibe uma h1tag.

Antes de abrir a URL, você precisa iniciar o servidor web de desenvolvimento Django:

python manage.py runserverLinguagem de código:  Python  ( python )

Ao navegar até http://127.0.0.1:8000/blog/, você verá uma página da Web que exibe o Blog Hometítulo.

Aqui está o fluxo:

  • Primeiro, o navegador da web envia uma solicitação HTTP para o URLhttp://127.0.0.1:8000/blog/
  • Segundo, o Django executa urls.pyno django_projectdiretório. Ele corresponde blog/ao URL na urlpatternslista no arquivo urls.py. Como resultado, ele envia ''para o urls.pyaplicativo blog.
  • Terceiro, o Django executa o urls.pyarquivo na blogaplicação. Ele combina o ''URL com a views.homefunção e a executa, que retorna uma resposta HTTP que gera uma h1tag.
  • Finalmente, o Django retorna uma página web para o navegador web.

Adicionando mais rotas

Primeiro, defina a about()função no views.pyaplicativo blog:

from django.shortcuts import render
from django.http import HttpResponse


def home(request):
    return HttpResponse('<h1>Blog Home</h1>')


def about(request):
    return HttpResponse('<h1>About</h1>')
Linguagem de código:  Python  ( python )

Segundo, adicione uma rota ao urls.pyarquivo:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='posts'),
    path('about/', views.about, name='about'),
]
Linguagem de código:  Python  ( python )

Terceiro, abra o URL http://127.0.0.1:8000/blog/about/e você verá uma página que exibe a página Sobre.

Agora, se você abrir o URL inicial, verá uma página que exibe uma página não encontrada com um código de status HTTP 404.

O motivo é que urls.pyin the django_projectnão possui nenhuma rota que mapeie o URL inicial com uma visualização.

Para tornar o aplicativo do blog a página inicial, você pode alterar a rota de blog/para ''da seguinte forma:

from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
]
Linguagem de código:  Python  ( python )

Se você abrir o URL http://127.0.0.1:8000, verá a página inicial do blog. E navegar até o URL http://127.0.0.1:8000/about/o levará para a página Sobre.

Baixe o código fonte do Projeto Django

Resumo

  • Um projeto Django contém uma ou mais aplicações.
  • Um aplicativo Django é um grupo de modelos, visualizações, modelos e URLs.
  • Use python manage.py startapp app_nameo comando para criar um novo aplicativo Django.
  • Defina uma função no views.pyarquivo para criar uma visualização baseada em função.
  • Defina uma rota no urls.pyarquivo da aplicação para mapear um padrão de URL com uma função de visualização.
  • Use a include()função para incluir o urls.pyaplicativo no urls.pyprojeto.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *