No tienes acceso a esta clase

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

Curso Básico de Django

Curso Básico de Django

Facundo García Martoni

Facundo García Martoni

Creando vistas para la aplicación

19/29
Recursos

Aportes 12

Preguntas 1

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Yo defini mis urls un poco distinto basandome en la estructura de una api definiendo el tipo de recurso antes del id…

urlpatterns = [
    path("", views.index, name="index"),
    path("detail/<int:question_id>", views.detail, name="detail"),
    path("results/<int:question_id>", views.results, name="results"),
    path("vote/<int:question_id>", views.vote, name="vote"),
]

Bastante básico este curso, espero el próximo sea Pro.

Resumen de como trabajan las Vista (Views) al recibir un request por el navegador para luego entregar una respuesta:
.
1- Se manda un request por la barra de URL en el navegador.
2 - Se recibe en el archivo urls py y según la URL envidada se determina cual es el view correspondiente en el archivo views py.
3 - Ser recibe el request en views py en la función o clase correspondiente y se retorna una respuesta.

at polls/views.py we will create or functions views for the app

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

#function based view
#every function works with requests and http response 
def index(request):
    """our index page view"""
    return HttpResponse("Página Principal de Premios Platzi App😎")

def detail(request, question_id):
    """details of every question"""
    return HttpResponse(f'Estás viendo la pregunta {question_id}')

def results(request, question_id):
    """details of every question result"""
    return HttpResponse(f'Estás viendo los resultados de la pregunta {question_id}')

def vote(request, question_id):
    """Functions for voting confirmation"""
    return HttpResponse(f'Estás votando a la pregunta {question_id}')

at polls/urls.py we set our paths for the functions

from django.urls import path

from . import views #from here import...

urlpatterns = [
    #ex: /polls/
    path("", views.index, name="index"),
    #ex: /polls/5/
    path("<int:question_id>/", views.detail, name="index"),
    #ex: /polls/5/details
    path("<int:question_id>/", views.detail, name="index"),
    #ex: /polls/5/results
    path("<int:question_id>/results/", views.results, name="index"),
    #ex: /polls/5/vote
    path("<int:question_id>/vote/", views.vote, name="index"),
]

# "< >/ is the way we pass parameters and variables through the url we are setting"

Some examples

Notices that we are not connected to the current question database yet, that’s why it doesn’t rise error where a non existing question is called at the url.

Quedé con muchas preguntas respecto a las url, si desean profundizar en el tema aquí les comparto los recursosl. Saludos!!

How Django processes a request
Using regular expressions
Including other URLconfs
Captured parameters

Considero importante un detalle que se le pasó a Facundo, el parámetro ‘name’ de las vistas en el archivo de las urls:

from django.urls import path

from . import views

urlpatterns = [
    # * ex: /polls/
    path('', views.index, name="index"),
    # * ex: /polls/3
    path('<int:question_id>/', views.detail, name="detail"),
    # * ex: /polls/3/results
    path('<int:question_id>/results/', views.results, name="results"),
    # * ex: /polls/3/vote
    path('<int:question_id>/vote/', views.vote, name="vote"),
]

Superbien!

Recuerden guardar todos los cambios, si no lo haces puedes tener problemas

tuve un problema con los import en la parte de urls, al importar las views como Facundo no me andaba el server, el usa from . import views, a mi no me funciona, así que reemplace el ’ . ’ por ‘polls’ y me funciona. Así que si alguien tiene ese problema ya sabe:
from polls import views

Para que me pudieran funcionar las vistas en el navegador tuve que agregar un / al principio del path en el archivo urls

Las views pueden definirse con:
- Functions: Functions based views
- Class: Generic views

Definir views con Generic views es mucho mas rápido cuando debemos definir vista compuestas por Templates, Querysets, Contexts, Models, Forms. Entre otros según el modelo de negocio.

Creación de views en polls/views-py

def detail(request, question_id):
    return HttpResponse(f"Estas viendo la pregunta número {question_id}")

Creación de re-dirección en polls/url-py

urlpatterns = [
    path('', views.index, name='index'),
    #ex: /polls/5/
    path('<int:question_id>/', views.detail, name='index'),
]

El ejemplo es básico, pero tener el concepto claro es importante para profundizar en el manejo de variables e importación de datos