Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado.

Sem roteamento dinâmico, navegar em páginas da web seria difícil. Você teria que digitar o caminho completo de cada página visitada no navegador. Que experiência de usuário terrível.

Localizadores de recursos uniformes dinâmicos (URLs), permitem que você navegue para diferentes páginas em um aplicativo com o clique de um botão. O Django facilita o design de URLs dinâmicos. Possui um módulo de configuração de URL (URLconf) que conecta expressões de URL a visualizações.

Todo o código no URLconf está na sintaxe do Python, facilitando a criação de URLs dinâmicos. Vamos aprender mais sobre URLs dinâmicos construindo um projeto Django.

1. Criar um projeto Django

Primeiro, criar um projeto Django e aplicativo (aplicativo).

Nomeie seu aplicativo Boma-watch. O aplicativo coletará localização, descrição e números de residentes de vários bairros. Crie um modelo chamado

Vizinhança. Use o modelo para adicionar informações sobre os bairros em um banco de dados. Aprender como criar modelos em Django e o banco de dados se você não estiver familiarizado.

Em seguida, crie uma função de exibição para os bairros.

2. Criar uma Função de Visualização

No Django, views são funções Python que pegam requisições HTTP e retornam respostas. Em uma página da Web desenvolvida pelo Django, as visualizações executam tarefas e missões variadas.

Para executar uma visualização, você deve chamá-la por meio de uma URL. Uma URL é um caminho exclusivo para um recurso na web. O recurso pode ser uma página HTML, imagem ou um terminal de API.

Crie uma URL que recupere os dados da vizinhança com base nos parâmetros passados. Para fazer isso, você pode usar o chave primária (pk) ou Identificação (id) para recuperar as informações. Você usará um modelo para fazer isso.

Você pode criar visualizações definindo-as em um arquivo chamado views.py na pasta do aplicativo. Comece importando o renderizar função do Django para exibir dados na URL. Importe também o Vizinhança modelo de modelos.py.

de django.shortcuts importar renderizar
de .modelos importar Vizinhança

Em seguida, crie uma função de exibição chamada lar que exibe todos os bairros no modelo inicial. O NeighborHood.objects.all() função recebe dados para todos os bairros do banco de dados.

deflar(solicitar):
bairros = NeighbourHood.objects.all()
retornar renderização (solicitação, "home.html", {'bairros':bairros})

Além disso, crie uma função de exibição para join_hood que exibirá as informações de um bairro. O NeighbourHood.objects.get (id=id) função solicita dados de acordo com o ID. As informações são então renderizadas em um modelo.

defjoin_hood(Identificação do Pedido):
vizinhança = NeighbourHood.objects.get (id=id)
retornar renderização (solicitação, 'join_hood.html', {'vizinhança':vizinhança})

Mais tarde, quando você navegar para um bairro, poderá ver as informações do perfil dele.

3. Criar um URL dinâmico

Agora você pode criar um URL dinâmico para a função de exibição que criou.

de django.urls importar caminho
de. importar Visualizações
de django.conf importar configurações
de django.conf.urls.static importarestático
dedjango.contrib.staticfiles.urlsimportarstaticfiles_urlpatterns

urlpadrões = [
caminho ('lar', views.home, nome='lar'),
caminho ('join_hood/<str: id>/', views.join_hood, nome='join_hood'),
]

seconfigurações.DEPURAR:
urlpadrões += estático(configurações. MEDIA_URL, document_root = configurações. MEDIA_ROOT)

Importar caminho de URLs do Django para criar caminhos para a visualização. Em seguida, importe as funções de exibição de views.py.

O join_hood O URL tem um espaço reservado entre colchetes angulares:. Isso captura essa parte da URL e a envia para a exibição.

Os colchetes geralmente incluem uma especificação do conversor. A especificação pode ser uma string (str) ou inteiro (int). Django também oferece lesma, caminho, ou identificadores universalmente exclusivos (uuid). A especificação limita o tipo de variável ou o número de caracteres passados ​​na URL para a exibição.

Dar um nome aos URLs ajudará a identificá-los nos modelos.

O estático e arquivos estáticos as importações exibem arquivos estáticos nos caminhos de URL. Saiba mais sobre como estruturar parâmetros de URL no oficial Django documentação.

4. Adicionar URL a um modelo

Depois de adicionar a função de visualização ao URL, crie um modelo HTML para exibir os dados. Você nomeia o modelo join_hood.html.

{% estende "base.html" %}

{% carregar estático %}

{% bloquear conteúdo %}
<classe div ="cartão mb-3" estilo="largura máxima: conteúdo adequado;">
<classe div ="linha g-0">
<classe div ="col-md-4">
<classe div ="col-md-8">
<classe div ="corpo do cartão">
<classe h5="cartão-título"> Bem-vindo!</h5>
<p classe="cartão-texto pt-4"> Nome: {{neighborhood.name}}</p>
<p classe="cartão-texto pt-4"> Local: {{neighborhood.location}}</p>
<p classe="cartão-texto pt-4"> Descrição: {{neighborhood.description}}</p>
<p classe="cartão-texto pt-4"> Telefone de saúde:{{neighbourhood.health_tell}}</p>
<p classe="cartão-texto pt-4"> Número da Polícia: {{neighbourhood.police_number}}</p>
<p classe="cartão-texto pt-4"> Moradores: {{bairro. Contar}}</p>
</div>
</div>
</div>
</div>
</div>
{% bloco final %}

Crie o join_hood modelo na pasta do aplicativo para exibir os dados da vizinhança. Primeiro, estenda o base.html template com folhas de estilo (bootstrap) que você usará para estilizar o template. Em seguida, renderize as variáveis ​​que exibirão as informações na página.

A seguir, crie um home.html modelo onde você irá exibir todos os bairros.

{% estende 'base.html' %}

{% carregar estático %}

{% bloquear conteúdo %}
<classe div ="recipiente" estilo="cor preta;">
<img src ="{{neighborhood.hood_logo.url}}" turma="card-img-top" alt="{{user.neighborhood.name}}">

<classe div ="linha">
{% para vizinhança em vizinhanças %}
<classe div ="col-md-4">
<classe div ="cartão mb-4" estilo="altura mínima: 340px">
<img src ="{{neighborhood.hood_logo.url}}" turma="card-img-top" alt="{{user.hood.name}}">

<classe div ="corpo do cartão">
<classe h5="cartão-título">
{{neighborhood.name}}
({{bairro.local}})
<classe span ="ml-4">{{vizinhança. Contar}} membro{{neighborhood.members.count|pluralizar}}</span>
</h5>

<p classe="cartão-texto">{{neighborhood.description}}</p>
<p classe="cartão-texto">{{neighborhood.member. Contar}}</p>

<a href="{% url 'join_hood' bairro.id %}" turma="btn btn-primário btn-sm">Junte-se à capa</a>
</div>
</div>
</div>
</div>
</div>
{% bloco final %}

Na página inicial, renderize todas as informações que deseja exibir sobre os bairros. Você adicionará um botão e uma marca de âncora na página inicial. A tag âncora tem o URL nome e ID do bairro.

Quando clicado, o botão navega até a vizinhança desse ID. O modelo inicial aparece no URL http://127.0.0.1:8000/home/. A imagem abaixo demonstra esta página:

5. Testar Roteamento Dinâmico

Agora, você pode testar se o roteamento dinâmico funciona no modelo. Quando você clicar no junte-se ao capô botão, ele navega para o join_hood modelo. O join_hood modelo exibe informações de perfil sobre o bairro que você selecionou.

Você também verá o ID do bairro exibido na URL do navegador http://127.0.0.1:8000/join_hood/2/

Aparecerá como mostrado abaixo:

Parabéns! Você criou um URL dinâmico.

Por que usar URLs do Django?

URLs dinâmicos são um recurso importante em aplicativos da web. O Django facilita o design de URLs de acordo com suas necessidades. Ele remove as limitações que você pode associar a outras estruturas.

O módulo URLconf está repleto de recursos que suportam a criação de URLs Django. Também facilita a exibição de arquivos estáticos em modelos e melhora o tratamento de erros.

O Django possui outros recursos projetados para otimizar aplicativos de back-end. Ele automatiza autenticação de usuários, administração de conteúdo e mapas de sites, entre outros recursos.