Vistas
Las vistas en Django son funciones que pueden traer o no información de la base de datos, un ejemplo de vista es la siguiente:def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:
context = {'latest_question_list': latest_question_list}
return render(request,'polls/index.html',context)
para validar que la informacion de la base de datos no se envié vacía, django tiene los métodos get_object_or_404 y get_list_or_404, un ejemlpo de este tipo de métodos es:
def detail(request,question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request,'polls/detail.html',{'question':question})
Rutas
Las rutas se les puede definir un nombre para que se diferencien de las rutas de las otras aplicaciones en el proyecto y sea mas fácil su modificación , el nombre se define con la linea:
app_name = 'polls'
y para agregar una nueva ruta podemos utilizar la siguiente sintaxis:
path('<int:question_id>/',views.detail,name='detail'),
estas configuraciones se hacen en el archivo ubicado en polls/urls.py y en el archivo mysitio/urls.py se configura con el método include, esto sirve para llamar todas las rutas definidas en polls/urls.py, el método include quedaría de la siguiente forma:
from django.urls import include,path
path('polls/',include('polls.urls')),
Plantillas
para invocar una ruta desde la plantilla utilizando el nombre que se definió, se utiliza el siguiente código:
<li><a href="{% url 'polls:detail' question_id %}">{{question.question_text}}</a></li>
un ejemplo de la potencia de las plantillas de django lo podemos observar en el siguiente código:
<h1>{{question.question_text}}</h1>
<ul>
{%for choice in question.choice_set.all%}
<li>{{choice.choice_text}}</li>
{%endfor%}
</ul>
el cual realiza un inner join en la vista y trae la información tanto de la pregunta como de las opciones con solo la linea for choice in question.choice_set.all.
No hay comentarios:
Publicar un comentario