Esta es una web de gatos para consultar los errores http ♥
Introducción
Bienvenido al desarrollo backend con Python
¿Qué es Django?
Comenzando a programar en Django
Instalación de Django
Explorando los archivos que creó Django
El servidor de desarrollo
Nuestro primer proyecto: Premios Platzi App
Nuestro primer proyecto: Premios Platzi App 2
Ajustando el archivo settings.py
Models
¿Qué es ORM? ¿Qué es un modelo?
Creando un diagrama entidad-relación para nuestro proyecto
Creando los modelos Question y Choice
Interactive Shell
La consola interactiva de Django
El método __str__
Filtrando los objetos creados desde la consola interactiva
El método filter
Accediendo al conjunto de respuestas
Django Admin
El administrador de Django
Views
¿Qué son las views o vistas?
Creando vistas para la aplicación
Templates de Django
Creando el template del home
Elevando el error 404
Utilizando la etiqueta url para evitar el hard coding
Forms
Formularios: lo básico
Creando la vista vote
Creando la vista results
Generic Views
Generic Views
Implementando generic views en la aplicación
Conclusiones
Aprendiste mucho, pero, ¿estás listo para pasar al siguiente nivel?
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Aportes 11
Preguntas 5
Personalizar Error 404 puedes hacer lo siguiente:
En settings,py debes modificar lo siguiente:
DEBUG = False
ALLOWED_HOSTS = ['*']
Y el archivo debe ir dentro de polls/templates/404,html
Esta muy interesante la manera de hacer consultas
Http Status Code:
Este es un tema muy interesante acerca de los shortcut functions de Django, en este documento cortico encontrarán toda la información valiosa para entender el funcionamiento más a profundidad, espero sea de ayuda.
Allà se tratan 4 puntos importantes:
Documentación: Django shortcut functions
La forma de hacerlo sin el shorcut podria ser asÃ:
from django.http import Http404
def detail(request, question_id):
try:
question = Question.objects.get(pk=question_id)
except Question.DoesNotExist:
raise Http404()
Aclaracion:
Este approach funciona cuando tenemos definido un template espacifico para errores 404 (404.html), si DEBUG=False en el config. py entonces Django va a mostrar este template cada vez que elevemos el error asi como lo hice yo. Tambien puedes hacerlo de la siguiente manera
return HttpResponseNotFound('<h1> not found </h1>')
de esta forma puedes definir el html a retrnar directamente en la response.
Mas detalles en la doc de Django
La verdad que Django es una delicia para programar, tiene la simplicidad de Python para programar y entender el código. Pero a su vez un montón de funcionalidades de una comunidad tan activa y con lo cual puedes hacer casi todo. Me encanta este framework es lo que estaba buscando para mis herramientas de desarrollo.
si no hay respuesta, salta un comentario "no hay
{% if question.choice_set.all %}
<h1>{{question.question_text}}</h1>
<ul>
{% for choice in question.choice_set.all %}
<li>{{choice.Choices_text}}</li>
{% endfor %}
</ul>
{% else %}
<p> <h1>{{question.question_text}}</h1></p>
<p> no hay</p>
{% endif %}
"
Si no encuentra respuestas simplemente se pone una condicion:
<h1>{{question.question_text}}</h1>
<ul>
{% if question.question_choices.all %}
{% for choice in question.question_choices.all %}
<li>{{choice.choice_text}}</li>
{% endfor %}
{% else %}
<p>No choices for this question</p>
{% endif %}
</ul>
Tipar los parámetros ayuda al autocompletado 😄
from django.http import HttpRequest
def detail(request: HttpRequest, question_id: int):
question = get_object_or_404(Question, pk=question_id)
return render(request, 'polls/detail.html', {
'question': question
})
En los templates no se le colocan los () al queryset
Porque asà es la sintaxis de django para hacer los templates.
Se puede hacer el queryset desde la vista si se desea:
question = Question.objects.get(pk=question_id)
choices = question.choice_set.all()
O como lo hizo el profesor desde el template:
{% for choice in question.choice_set.all %}
Permitiendo Minimixar lineas de código.
Aunque no lo querÃa, a medida que avanzo en aprendizaje busco la manera de escribir menos lineas posibles.
Nunca pares de aprender.
Exitos codeando 😉
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.