Fundamentos de Django

1

¿Qué es Django?

2

¿Cómo instalar Django?

3

Entendiendo la arquitectura de Django

4

Qué es el patrón MVT (Model, View y Template)

La M en el Patrón: Modelo

5

Introducción a Modelos y Bases de Datos

Manejo Avanzado de Modelos y Bases de Datos

6

Gestión de Modelos y Bases de Datos en Django con SQLite

7

Inserción de Datos con Django

8

Actualización y Eliminación de Datos en Django

Relaciones y Asociaciones entre Modelos

9

Creación y Gestión de Relaciones entre Modelos en Django

10

Relaciones Muchos a Muchos (N:N) en Django

11

Relaciones Uno a Uno (1:1) en Django

12

Queries y Filtros en Django: Optimización y Estrategias Avanzadas

Configuración de URLs y Vistas Avanzadas

13

Gestión de URLs en Django: Configuración, Rutas y Mejores Prácticas

14

Vistas Basadas en Clases en Django

La T en el Patrón: Plantillas o Templates

15

Personalización de Interfaz con Plantillas en Django

Desarrollo de Aplicaciones en Django

16

Configuración del Proyectos en Django

17

Creación del Modelo para la Aplicación 'Products' en Django

18

Cómo Crear Migraciones de Datos en Django

19

Creación de la Aplicación 'Products' con Formularios en Django

20

Integracion de TailwindCSS en Django

21

Django Admin

22

Manejo de Sesiones en Django

23

Manejo de Órdenes en CoffeShop

24

Manejo de Pedidos en CoffeShop

25

Mixings en vistas basadas en clases

26

Agregar productos a la orden

Django Rest Framework

27

Django REST Framework

Despliegue de aplicaciones Django

28

Configurar PostgreSQL en AWS con Django

29

Variables de entorno en Django

30

¿Cómo usar Unit Testing en Django?

31

Debugging en Django

32

Desplegar aplicaciones de Django en AWS

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Django

Curso de Django

Luis Martínez

Luis Martínez

Gestión de URLs en Django: Configuración, Rutas y Mejores Prácticas

13/32
Recursos

Configurar las URLs en Django es esencial para organizar tu proyecto y facilitar la navegación.

¿Cómo crear un archivo de URLs en Django?

Primero, debes crear un archivo urls.py en cada aplicación que desarrolles. Por ejemplo, si tienes una aplicación llamada MyFirstApp, debes crear un archivo urls.py dentro de esta aplicación.

  1. Crear el archivo: En la aplicación MyFirstApp, crea un archivo llamado urls.py.
  2. Copiar y pegar configuración básica: Puedes copiar la configuración básica de otro archivo de URLs y modificarla según sea necesario.
  3. Eliminar enlaces e importaciones innecesarias: Mantén solo lo necesario para tu aplicación.
from django.urls import path
from . import views

urlpatterns = [
    path('listado/', views.myView, name='listado'),
]

¿Cómo incluir URLs de una aplicación en el proyecto?

Para incluir las URLs de una aplicación en el proyecto principal, sigue estos pasos:

  1. Modificar el archivo de URLs del proyecto: Agrega un nuevo path que incluya las URLs de tu aplicación.
from django.urls import include, path

urlpatterns = [
    path('carros/', include('myFirstApp.urls')),
]
  1. Importar el include: Asegúrate de importar include desde django.urls.

¿Cómo configurar un servidor de desarrollo?

Para probar los cambios, ejecuta el servidor de desarrollo:

python manage.py runserver

Esto iniciará el servidor y podrás ver los cambios en tiempo real.

¿Cómo crear URLs dinámicas?

Para crear URLs que acepten parámetros dinámicos, sigue estos pasos:

  1. Definir una URL dinámica: Utiliza los caracteres < y > para especificar el tipo de dato y el nombre del parámetro.
urlpatterns = [
    path('detalle/<int:id>/', views.detalle, name='detalle'),
]
  1. Modificar la vista para aceptar parámetros: Asegúrate de que tu vista acepte los parámetros correspondientes.
def detalle(request, id):
    return HttpResponse(f"El ID es {id}")

¿Cómo manejar diferentes tipos de datos en URLs?

Django permite convertir diferentes tipos de datos en las URLs, como enteros y cadenas de texto:

  1. Enteros: Utiliza <int:nombre> para enteros.
  2. Cadenas de texto: Utiliza <str:nombre> para cadenas de texto.
urlpatterns = [
    path('marca/<str:brand>/', views.marca, name='marca'),
]

¿Cómo probar URLs dinámicas en el navegador?

  1. Probar con enteros: Accede a una URL que requiera un entero, como detalle/1/.
  2. Probar con cadenas de texto: Accede a una URL que requiera una cadena de texto, como marca/mazda/.

Aportes 12

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Reto resuelto: ```js from django.http import HttpResponse from django.urls import path from .models import Author, Profile def my_view(request, *args, **kwargs): print(args) print(kwargs) return HttpResponse("") def author_view(request, *args, **kwargs): print(args) print(kwargs) author = Author.objects.get(id=kwargs['id']) profile = Profile.objects.get(author_id=kwargs['id']) return HttpResponse(f"Author: {author.name} - Website: {profile.website} - Biografia: {profile.biography} ") urlpatterns = [ path('listado/', my_view), path('detalle/<int:id>', my_view), path('marcas/<str:brand>', my_view), path('autor/<int:id>', author_view), ] ```
Me sale un warning que las urls deben empezar sin la barra, así path("/listado", my\_view) debe ser cambiado a path("listado", my\_view). Sigue funcionando igual, pero desaparece el warning
en mi punto de vista, vi que varios crean su url concatenando su ID, siento que no es nada seguro porque se podria hacer muchas cosas con ese id que tiene en la url, lo conveniente es manejarlo oculto mas no mostrar por ID, es mi punto de vista ya que hay otros metodos de como hacerlo
![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%20%2819%29-4e2799d1-57a8-4300-a4de-6193a4c642c8.jpg)tengo un problema
![](https://static.platzi.com/media/user_upload/image-facec073-23ef-4fb4-832d-614b0f19f5ee.jpg)![](https://static.platzi.com/media/user_upload/image-14962c67-1ae9-410c-bb42-dd4f125b2ca9.jpg) ![](https://static.platzi.com/media/user_upload/image-ae3efdf5-7495-4f60-a002-bd2cb9ec879a.jpg)
Vista: from django.contrib import adminfrom django.urls import path, includefrom django.http import HttpResponsefrom django.urls import pathfrom my\_first\_app.views import my\_view, my\_view2\\<html lang="en">\<head>    \<meta charset="UTF-8">    \<meta name="viewport" content="width=device-width, initial-scale=1.0">    \<title>Lista de Autos\</title>\</head>\<body>    \

Perfil del Autor {{ profile.author.name }}\

    \        {% for author in author\_biography %}        \            \            \            \        \        {% endfor %}    \
{{ author.author }}\{{ author.website }}\{{ author.biography }}\
\</body>\</html> urlpatterns = \[    path("listado/", my\_view, name="car\_list"),    path("detalle/\<int:id>", my\_view),    path("marcas/\<str:brand>", my\_view),    path("autor/\<str:author\_name>", my\_view2, name="author\_biography"),] urlpatterns = \[    path('admin/', admin.site.urls),    path("carros/", include("my\_first\_app.urls")),    path("biografia/",include("my\_first\_app.urls"))] ```js from django.shortcuts import render from my_first_app.models import Car, Profile # Create your views here. def my_view(request): car_list = Car.objects.all() context = { "car_list": car_list } return render(request, "my_first_app/car_list.html", context) def my_view2(request,author_name): author_biography = Profile.objects.filter(author__name=author_name) context = { "author_biography": author_biography } return render(request, "my_first_app/car_list.html", context) ```Urls: ```js from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path("carros/", include("my_first_app.urls")), path("biografia/",include("my_first_app.urls")) ] ```Urls de my\_first\_app: ```js from django.http import HttpResponse from django.urls import path from my_first_app.views import my_view, my_view2 urlpatterns = [ path("listado/", my_view, name="car_list"), path("detalle/<int:id>", my_view), path("marcas/<str:brand>", my_view), path("autor/<str:author_name>", my_view2, name="author_biography"), ] ```template: ```js <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Lista de Autos</title> </head> <body>

Perfil del Autor {{ profile.author.name }}

{% for author in author_biography %} {% endfor %}
{{ author.author }} {{ author.website }} {{ author.biography }}
</body> </html> ```
Reto: **views.py** en **my\_first\_app:** ![](https://static.platzi.com/media/user_upload/image-97a07da7-43ce-48a5-bbfa-378c2e35f110.jpg) dentro de templates/my\_first\_app/ cree el archivo author\_profile.html ![](https://static.platzi.com/media/user_upload/image-d3a4a244-b385-4d87-9de4-8258de90067b.jpg) Luego dentro de my\_first\_app modifique el archivo urls.py de la siguiente manera: ![](https://static.platzi.com/media/user_upload/image-4ef1414e-d1f4-4f34-8866-33da44aa5930.jpg) Luego de eso modifique el archivo urls.py dentro de my\_\_first\_project: ![](https://static.platzi.com/media/user_upload/image-f7699ec1-4cc6-480c-a2bb-07fc8eeee200.jpg) Al modificar el urls del proyeto en la linea 22 quitando carros, al ejecutar el código las rutas quedan: ![](https://static.platzi.com/media/user_upload/image-ca856c41-24e0-4902-b1cb-4d776448f4b4.jpg) Finalmente para ver el el perfil del autor: ![](https://static.platzi.com/media/user_upload/image-7fba8698-646f-479b-b9ac-1b01cfd67659.jpg)
Algo mas de las URLs en Django en los primeros pasos con Django documentation: <https://docs.djangoproject.com/en/5.0/intro/tutorial01/#path-argument-route>
Comparto mi solución para mostrar la información del perfil de un Autor: **views.py (my\_first\_app):** ![](https://static.platzi.com/media/user_upload/image-d5186144-425c-4564-aefb-f3b52ff67c75.jpg) **urls.py (my\_first\_app):** ![](https://static.platzi.com/media/user_upload/image-1509e7d9-2107-4e05-9d4a-f0d94e681ffb.jpg) **author\_profile.html (my\_first\_app/views):** ![](https://static.platzi.com/media/user_upload/image-06f6c99d-d135-4aec-b9c6-ad6d0545577a.jpg)
Me parece que esta clase de URL fue muy resumida y muy rápida. Hubiese sido mejor que empiece con la creación de la URL de la homepage creándola desde my_first_project y luego si con la explicación de include urls en las app.
urls.py ```python from django.http import HttpResponsefrom django.urls import path from my\_first\_app.views import author\_profile\_show def my\_view(request, \*args, \*\*kwargs):    print(args)    print(kwargs)    return HttpResponse("") urlpatterns = \[    path("listado/", my\_view),    path("detalle/\<int:id>", my\_view),    path("marcas/\<str:brand>", my\_view),    path("author\_profile/\<int:id>", author\_profile\_show), ``` **view.py** ```python from django.shortcuts import renderfrom my\_first\_app.models import Car, Profile \# Create your views here.def my\_view(request):    car\_list = Car.objects.all()    context = {        "car\_list":car\_list    }    return render(request, "my\_first\_app/car\_list.html", context) def author\_profile\_show(request, id):    profile = Profile.objects.get(author\_id = id)    context = {        "profile":profile    }    return render(request, "my\_first\_app/author\_profile.html", context) ``` **author\_profile.py** ```html \\<html lang="en">\<head>    \<meta charset="UTF-8">    \<meta name="viewport" content="width=device-width, initial-scale=1.0">    \<title>Document\</title>\</head>\<body>    \<head>AUTHOR PROFILE\</head>    \<main>        \<article>            \<header>                \

{{ profile.author.name}}\

                \

Fecha de nacimiento: \<time>{{ profile.author.birth\_date }}\</time>\

            \</header>            \<footer>                \

{{ profile.biography }} \

                \                {{ profile.website }}            \            \</footer>        \</article>    \</main>\</body>\</html> ```
1. url app![](https://static.platzi.com/media/user_upload/image-ec2372b5-8232-43ef-bb3f-007ddddb2c7c.jpg) 2. url proyecto ![](https://static.platzi.com/media/user_upload/image-779af117-6cf9-4b38-b905-759ec67f2714.jpg) 3. vista autor ![](https://static.platzi.com/media/user_upload/image-3ef8fc04-7dd5-4dcb-b027-c6c3feb36b03.jpg) 4. html ![](https://static.platzi.com/media/user_upload/image-865b2f1b-d306-42bd-96ff-44d072f090e6.jpg) 5. resultado![](https://static.platzi.com/media/user_upload/image-8d09d7d7-26bf-4854-884a-0343afac9bb8.jpg)