Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado.
Sin el enrutamiento dinámico, sería difícil navegar por las páginas web. Tendría que escribir la ruta completa de cada página que visite en el navegador. Qué terrible experiencia de usuario.
Los localizadores uniformes de recursos (URL) dinámicos le permiten navegar a diferentes páginas en una aplicación con solo hacer clic en un botón. Django facilita el diseño de URL dinámicas. Tiene un módulo de configuración de URL (URLconf) que conecta las expresiones de URL a las vistas.
Todo el código en URLconf está en sintaxis de Python, lo que facilita la creación de URL dinámicas. Aprendamos más sobre las URL dinámicas creando un proyecto Django.
1. Crear un proyecto Django
Primero, crear un proyecto Django y aplicación (aplicación).
Nombra tu aplicación Boma-reloj. La aplicación recopilará la ubicación, la descripción y los números de residentes de varios vecindarios. Crea un modelo llamado
Vecindario. Use el modelo para agregar información sobre los vecindarios en una base de datos. Aprender como crear modelos en Django y la base de datos si no está familiarizado.Luego, cree una función de vista para los vecindarios.
2. Crear una función de vista
En Django, las vistas son funciones de Python que toman solicitudes HTTP y devuelven respuestas. En una página web impulsada por Django, las vistas realizan diversas tareas y misiones.
Para ejecutar una vista, debe llamarla a través de una URL. Una URL es una ruta única a un recurso en la web. El recurso puede ser una página HTML, una imagen o un punto final de API.
Cree una URL que recupere datos del vecindario en función de los parámetros pasados. Para hacerlo, puede utilizar el clave principal (pk) o Identificación (identificación) para recuperar la información. Utilizará una plantilla para hacer esto.
Puede crear vistas definiéndolas en un archivo llamado vistas.py en la carpeta de la aplicación. Comience por importar el prestar función de Django para mostrar datos en la URL. También importa el Vecindario modelo de modelos.py.
de django.atajos importar prestar
de .modelos importar Vecindario
A continuación, cree una función de vista llamada hogar que muestra todos los vecindarios en la plantilla de inicio. El Vecindario.objetos.todos() La función recibe datos de todos los vecindarios de la base de datos.
definitivamentehogar(pedido):
barrios = Vecindario.objetos.todos()
volver renderizar (solicitud, "inicio.html", {'barrios':barrios})
Además, cree una función de vista para unirse_hood que mostrará la información de un vecindario. El Barrio.objetos.get (id=id) La función solicita datos según el ID. Luego, la información se representa en una plantilla.
definitivamenteunirse_hood(solicitud, identificación):
barrio = BarrioBarrio.objetos.get (id=id)
volver renderizar (solicitud, 'unirse_hood.html', {'vecindario':vecindario})
Más adelante, cuando navegue a un barrio, podrá ver su información de perfil.
3. Crear una URL dinámica
Ahora puede crear una URL dinámica para la función de vista que creó.
de django.urls importar camino
de. importar puntos de vista
de django.conf importar ajustes
de django.conf.urls.estática importarestático
deDjango.contrib.archivos estáticos.urlsimportarstaticfiles_urlpatternspatrones de URL = [
camino ('hogar', vistas.inicio, nombre='hogar'),
camino ('unirse_hood/<cadena: identificación>/', vistas.join_hood, nombre='unirse_hood'),
]
siajustes.DEPURAR:
patrones de URL += estático(ajustes. MEDIA_URL, document_root = configuración. MEDIA_ROOT)
Importar camino de las URL de Django para crear rutas para la vista. Luego importe las funciones de vista desde vistas.py.
El unirse_hood La URL tiene un marcador de posición entre paréntesis angulares:. Esto captura esa parte de la URL y la envía a la vista.
Los paréntesis angulares suelen incluir una especificación de convertidor. La especificación puede ser una cadena (str) o un número entero (int). Django también ofrece babosa, camino, o identificadores únicos universales (uuid). La especificación limita el tipo de variable o el número de caracteres pasados en la URL a la vista.
Dar un nombre a las URL ayudará a identificarlas en las plantillas.
El estático y archivos estáticos las importaciones muestran archivos estáticos en las rutas URL. Obtenga más información sobre cómo estructurar los parámetros de URL en el sitio oficial Django documentación.
4. Agregar URL a una plantilla
Una vez que haya agregado la función de vista a la URL, cree una plantilla HTML para mostrar los datos. Tu nombras la plantilla unirse_hood.html.
{% extiende "base.html" %}
{% carga estático %}
{% contenido del bloque %}
<clase div="tarjeta mb-3" estilo="max-width: ajustar contenido;">
<clase div="fila g-0">
<clase div="col-md-4">
<clase div="col-md-8">
<clase div="cuerpo de tarjeta">
<clase h5="título de la tarjeta"> ¡Bienvenido!</h5>
<clase p ="tarjeta-texto pt-4"> Nombre: {{barrio.nombre}}</pag>
<clase p ="tarjeta-texto pt-4"> Ubicación: {{vecindario.ubicación}}</pag>
<clase p ="tarjeta-texto pt-4"> Descripción: {{barrio.descripción}}</pag>
<clase p ="tarjeta-texto pt-4"> Teléfono de salud:{{neighbourhood.health_tell}}</pag>
<clase p ="tarjeta-texto pt-4"> Número de policía: {{vecindario.police_number}}</pag>
<clase p ="tarjeta-texto pt-4"> Residentes: {{barrio. Contar}}</pag>
</div>
</div>
</div>
</div>
</div>
{% bloque final %}
Crear el unirse_hood plantilla en la carpeta de la aplicación para mostrar los datos del vecindario. Primero, extienda la base.html plantilla con hojas de estilo (bootstrap) que usará para diseñar la plantilla. Luego, represente las variables que mostrarán la información en la página.
A continuación, cree un inicio.html plantilla donde se mostrarán todos los barrios.
{% extiende 'base.html' %}
{% carga estático %}
{% contenido del bloque %}
<clase div="envase" estilo="de color negro;">
<img origen="{{barrio.hood_logo.url}}" clase="tarjeta-img-top" alt="{{usuario.vecindario.nombre}}"><clase div="fila">
{% para barrio en barrios %}
<clase div="col-md-4">
<clase div="tarjeta mb-4" estilo="altura mínima: 340px">
<img origen="{{barrio.hood_logo.url}}" clase="tarjeta-img-top" alt="{{usuario.campana.nombre}}"><clase div="cuerpo de tarjeta">
<clase h5="título de la tarjeta">
{{barrio.nombre}}
({{barrio.ubicación}})
<clase de intervalo ="ml-4">{{vecindario. Contar}} miembro{{vecindario.miembros.contar|pluralizar}}</span>
</h5><clase p ="texto de la tarjeta">{{barrio.descripción}}</pag>
<clase p ="texto de la tarjeta">{{barrio.miembro. Contar}}</pag>
<un href="{% URL 'unirse_hood' vecindario.id %}" clase="btn btn-primario btn-sm">Únete a Hood</a>
</div>
</div>
</div>
</div>
</div>
{% bloque final %}
En la página de inicio, renderiza toda la información que quieras mostrar sobre los barrios. Agregará un botón y una etiqueta de anclaje en la página de inicio. La etiqueta de anclaje tiene la URL nombre y identificación del vecindario.
Cuando se hace clic, el botón navega al vecindario de esa ID. La plantilla de inicio aparece en la URL http://127.0.0.1:8000/home/. La siguiente imagen muestra esta página:
5. Prueba de enrutamiento dinámico
Ahora, puede probar si el enrutamiento dinámico funciona en la plantilla. Cuando haces clic en el únete al capó botón, Navega a la unirse_hood plantilla. El unirse_hood plantilla muestra información de perfil sobre el vecindario que seleccionó.
También verá la identificación del vecindario que se muestra en la URL del navegador http://127.0.0.1:8000/join_hood/2/
Aparecerá como se muestra a continuación:
¡Felicidades! Ha creado una URL dinámica.
¿Por qué usar las URL de Django?
Las URL dinámicas son una característica importante en las aplicaciones web. Django facilita el diseño de URL según sus necesidades. Elimina las limitaciones que podría asociar con otros marcos.
El módulo URLconf está lleno de recursos que admiten la creación de URL de Django. También facilita la entrega de archivos estáticos en plantillas y mejora el manejo de errores.
Django tiene otras funciones diseñadas para optimizar las aplicaciones de back-end. Automatiza la autenticación de usuarios, la administración de contenido y los mapas del sitio, entre otras funciones.