LoginView
Se usa con: from django.contrib.auth.views import LoginView
Se usa para desplegar el login form y manejar toda la accion de logueo
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 24
Preguntas 0
LoginView
Se usa con: from django.contrib.auth.views import LoginView
Se usa para desplegar el login form y manejar toda la accion de logueo
Les recomiendo Esta página para ver detalladamente las class based views, les muestran jerarquías y herencias para entender como operan las mismas.
:
queryset = Question.objects.all()
date_field = 'pub_date'
allow_empty = True
Mi urls. py
from django.urls import path
from . import views
app_name='polls'
urlpatterns = [
# 2022/feb/1
path('<int:year>/<str:month>/<int:day>/',
views.QuestionDayArchiveView.as_view(),
name='question archive day'
)
]
Mi question_archive_day.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Questions published on {{ day }}</title>
</head>
<body>
<h1> Questions published on {{ day }}</h1>
{% if object_list %}
<ul>
{% for q in object_list %}
<li>
<p>
<strong>{{q.question_text}}</strong>
<i>published at {{ q.pub_date |date:'g:i A'}}</i>
</p>
</li>
{% endfor %}
</ul>
{% else %}
<p> No questions published on {{day}} </p>
{% endif %}
</body>
</html>
La vista desde el navegador
class PasswordResetCompleteView
from django.contrib.auth.views import PasswordResetCompleteView
con esta generic view podemos ofrecer la funcionalidad de notificar al usuario que la contraseña ha sido reestablecida.
PasswordChangeView es utilizada para cambiar la contraseña, por defecto trae la template registration/password_change_form.html
LoginView corresponde a un sistema de Logeo para los usuarios. De forma tal que dichos usuarios puedan disponer de una vista prediseñada para que puedan iniciar sesión sin darle acceso al panel de administración de Django. Lo que me parece genial de este tipo de recursos en Django es que dispone de atributos que facilitan ampliamente nuestro trabajo a nivel de seguridad y acceso que vienen nativos en Django.
https://developer.mozilla.org/es/docs/Learn/Server-side/Django/Authentication
CreateView: Vista para crear un nuevo objeto, con una respuesta representada por una plantilla.
class PasswordChangeDoneView
La página que se muestra después de que un usuario ha cambiado su contraseña.
from django.views.generic import DateDetailView
De las Generic Edit, Create View puede ser la más ocupada para poder hacer creación de un post en un blog o un Tweet o el posteo de una foto en instagram o la vista en la creación de una discución en el foro de platzi o un tutorial
Se importa con este código
from django.views.generic import CreateView
Las vistas basadas en clases utilizan atributos, a diferencia view function que utilizan parametros. Ademas de tener metodos que te ayudan segun tu desarrollo. Aqui traigo un ejemplo de generic view llamado DetailView, que utilice para un proyecto.
class EmpleadoDetailView(DetailView):
model = Persona
template_name = "persona/detailview.html"
def get_context_data(self, **kwargs):
context = super(EmpleadoDetailView, self).get_context_data(**kwargs)
context['titulo']='Empleado del mes'
return context
Como pueden observar utilice la clase y el metodo de esta pagina
Los atributos de la clase detailview que utilice fueron:
model: para referencial el modelo el cual se va utilizar
template_name : el nombre de mi html donde voy a mostrar dicha vista
Este metodo llamado def get_context_data me sirvio para enviar una variable extra al template, una variable que no se contemple dentro de los atributos del modelo, pero que me es necesario solo para ese proceso. Retornando el valor mencionado anteriormente.
LoginView es una claseView que permite crear una vista con un formulario para niciar sesión.
Cuenta con 15 atributos y 22 métodos
se importa de la siguiente manera
from django.contrib.auth.views import LoginView
UpdateView
Vista para actualizar un objecto, con una respuesta renderizada por un template.
Los atributos más importantes son:
model, success_url, template_name.
Los métodos más importantes son:
get, post, put, as_view
DetailView:
Representar una vista de “detalle” de un objeto.
La importamos en las view con:
from django.views.generic import DetailView
Con lo aprendido hasta ahora. Podemos sacar provecho de esta Generic View:
Los atributos:
model = modelo_a_mostrar
template_name=template_a_mostrar_el_detalle
Podemos defininir estos atributos y ya no deberíamos indicarlos en el return
Yo elegí el DetailView, para implementarlo se define la vista en el archivo views
class QuestionDetail(DetailView):
model=Question
template_name="polls/detail.html"
Y en el urls tendrían que remplazar el path donde se llamaba la función detail por esta linea:
path(‘int:pk/’,views.QuestionDetail.as_view(), name= ‘detail’)
El template queda tal como indicó el maestro en clase
LoginView
Nos muestra el formulario de inicio de sesión (Username, Password y submit).
UpdateView
Vista para actualizar un objeto, con una respuesta renderizada por una plantilla.
Use ListView para el index:
# polls/views-py
from django.views.generic import ListView
class ListQuestion(ListView):
model = Question
template_name = 'polls/index.html'
context_object_name = 'latest_question_list'
queryset = Question.objects.all()
# polls/url-py
urlpatterns = [
path('', views.ListQuestion.as_view(), name='index'),
LogoutView:
Esta vista hace logout al usuario además de mostrarle el mensaje “You’re logged out”.
Posee varios atributos como:
Así como métodos:
ArchiveIndexView
Pagina que muestra los ultimos archivos de una base de datos organizados por fecha. Se usa directamente desde la url . py y el archivo html correspondiente.
A continuación se muestra el uso del mismo con el ejemplo del curso:
En el archivo urls . py se usa así:
from django.urls import path
from django.views.generic.dates import ArchiveIndexView
from polls.models import Question
urlpatterns = [
path('url_name/',
ArchiveIndexView.as_view(model=Question, date_field="pub_date"),
name="article_archive.html"),
]
Y en el .html:
<ul>
{% for article in Question %}
<li>{{ article.pub_date }}: {{ article.question_text }}</li>
{% endfor %}
</ul>
FormView
Se usa importando:
from django.views.generic.edit import FormView
Previamente como comento el profesor. Son para llenar una variedad de opciones que se encuentren en el formulario. Utilizando el método POST. Encontré un ejemplo para entender mejor con código en el siguiente enlace:
https://www.geeksforgeeks.org/formview-class-based-views-django/
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.