Backend con Python > Sesión 03 > Proyecto
- Crear la ruta y vista para generar el formulario de login
- Crear la ruta y vista para procesar la información de un formulario vía POST
-
Actualizar repositorio
-
Usar la carpeta de trabajo
Sesion-03/Proyecto -
Diagrama del modelo entidad-relación para el proyecto Bedutravels
Dada la url http://localhost/login/ se deberá mostrar la siguiente página para hacer login al sistema:
Y posteriormente al proporcionar el usuario bedutravels y clave bedutravels deberá mostrar la página de inicio o un mensaje de error en caso de que no se proporciones los datos de forma correcta.
-
Crear la ruta para la url
/login/Se modifica el archivo
Bedutravels/tours/urls.pyagregando la línea siguiente:path("login/", views.login, name="login"),
-
Crear la vista
views.loginSe modifica el archivo
Bedutravels/tours/views.pyagregando las función login():def login(request): """ Atiende las peticiones de GET /login/ """ msg = "" return render(request, "registration/login.html", { "msg":msg, } )
-
Crear la plantilla
login.html__Se crea el archivo
Bedutravels/tours/templates/tours/registration/login.htmlcopiándolo desde la carpetaBedutravels/public_html/y se modifica de la siguiente forma:<section class="profile-container padding-top-lg" style="height: -webkit-fill-available;"> <div> {% if msg %} <aside class="text-center"> {{ msg }} </aside> {% endif %} <div class="margin-bottom-sm"> <p class="title-font margin-bottom-lg margin-top-lg text-center">Entra al sistema</p> </div> <div class="profile-info"> <form class="profile-inputs" method="post"> {% csrf_token %} Usuario: <input type="text" name="usuario" value="" required> Clave: <input type="password" name="clave" value="" required> <button class="button-tour margin-top-sm" style="align-self: center; width:50%;" type="submit" name="button"> Entrar </button> </form> </div> </div> </section>
No olvidar la etiqueta
csrf_token, ya que de lo contrario el contenido del formulario no será aceptado por parte de Django.Finalmente se obtiene el formulario esperado! Hooo noooo?
-
Agregando los archivos de estilos
Es necesario copiar dos archivos de estilos más desde la carpeta
Bedutravels/public_html/css/, que sonforms.cssyprofile.cssa la carpetaBedutravels/tours/static/tours/css/Bedutravels/tours/static/tours $ cp ../../../public_html/css/forms.css css/ Bedutravels/tours/static/tours $ cp ../../../public_html/css/profile.css css/ Bedutravels/tours/static/tours $
Recargar nuevamente la página (posiblemente sea necesario usar Control+Shift+R) y ahora si la página ya tiene que verse de forma correcta.
Ahora hay que procesar los datos recibidos del formulario
-
Ajustar la vista
views.loginpara que valide los datos del formulario.Se procesan los datos POST en la vista:
# Se definen los datos de un usuario válido usuario_valido = ("bedutravels", "bedutravels") # (username, password) # Si hay datos vía POST se procesan if request.method == "POST": # Se obtienen los datos del formulario usuario_form = (request.POST["username"], request.POST["password"]) if usuario_form == usuario_valido: # Tenemos usuario válido, redireccionamos a index return redirect("/") else: # Usuario malo msg = "Datos incorrectos, intente de nuevo!" else: # Si no hay datos POST msg = ""
Y así se debería de ver cuando el usuario es incorrecto:


