.class { align:center; }
Django

Sistema de inicio de sesión en Python Django

En este tutorial de Python Django, aprenderemos a crear un sistema de inicio de sesión en Python Django . Y también daremos ejemplos relacionados con esto. Estos son los siguientes temas que vamos a discutir en este tutorial.


En esta sección, aprenderemos qué significa el sistema de inicio de sesión en python Django.

Un sistema de inicio de sesión es una función de seguridad que evita que los usuarios no autorizados accedan a los recursos de un sitio web. Hay tres partes en el sistema de inicio de sesión:

  1. Registro: Registrarse es el proceso de crear una nueva cuenta. Si desea utilizar un portal o aplicación por primera vez, primero debe registrarse.
  2. Inicio de sesión: un inicio de sesión es una colección de credenciales que se utiliza para verificar la identidad de un usuario. Indica que el usuario ha sido identificado y autenticado para poder acceder al sitio web. La combinación más común es un nombre de usuario y una contraseña.
  3. Cerrar sesión: para cerrar sesión en un sitio web, primero debe iniciar sesión. Cuando cierra sesión, le está diciendo al sitio web que desea interrumpir su sesión de inicio de sesión.

CÓMO CREAR UN SISTEMA DE INICIO DE SESIÓN INTEGRADO DE DJANGO

En esta sección, aprenderemos cómo usar la función integrada de Django para desarrollar una página de inicio de sesión del sistema de inicio de sesión. Te guiaré paso a paso usando un ejemplo.

1. Crear proyecto

Si está comenzando un nuevo proyecto, primero cree un nuevo proyecto Django. El comando para crear un nuevo proyecto es el siguiente:

django-admin startproject project_name

Ejemplo: aquí creo un nuevo nombre de proyecto como LoginSystem.

Dominio:

django-admin startproject LoginSystem

Iniciar proyecto

2. Verifique la configuración necesaria

Antes de crear un sistema de inicio de sesión, asegúrese de tener django.contrib.auth en sus APLICACIONES INSTALADAS y que su middleware de autenticación esté configurado correctamente en la configuración de MIDDLEWARE .

Una aplicación que ya viene incluida

3. Hacer Migración

La migración es un medio de aplicar los cambios que hemos realizado en un modelo, en el esquema de la base de datos. Para crear todas las tablas de acuerdo con el esquema definido en el archivo de migración, ejecutamos el siguiente comando.

python manage.py migrate

4. Defina las URL del proyecto

Una dirección web se denomina URL. Cada vez que visita un sitio web, puede ver la URL en la barra de direcciones de su navegador. Cada página web debe tener su propia URL única. Como resultado, su aplicación sabrá qué mostrarle a un usuario que visite esa URL.

Abra el archivo urls.py de su proyecto y especifique las URL particulares.

from django.contrib import admin
from django.urls import path, include
from django.contrib.auth import views as auth_views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', auth_views.LoginView.as_view(), name="login"),
    path('login/',include('home.urls')),
]

Importe el módulo django.contrib.auth.views y agregue URLconf para la página de inicio de sesión y la página de inicio a su archivo urls.py.

Leer la lista de Python agregar Django

5. Plantilla de inicio de sesión

Básicamente, las plantillas de Django se utilizan para generar páginas web HTML dinámicas que son visibles para el usuario final. Una plantilla en Django está escrita en HTML, CSS y Javascript en un archivo .html.

LoginView intentará representar el registro/login.html de forma predeterminada. Cree una carpeta de registro en su carpeta de plantillas y una página login.html dentro de ella.




    
    
    
     


    
        {% csrf_token %}
        {{form.as_p}}
        
        
    


6. Configuración de plantillas

Para configurar el sistema de plantillas, debemos especificar varios elementos en el archivo settings.py. El nombre de nuestro directorio de plantillas es templates. Django Templates busca cada uno de los subdirectorios de APLICACIONES INSTALADAS por defecto para un subdirectorio de plantillas.

sistema de inicio de sesión incorporado en djangoConfiguración de plantilla

7. Redirigir a la página de inicio

Necesitamos redirigir a la página siguiente, que es la página de inicio, después de un inicio de sesión exitoso. Entonces, primero aprendamos a crear la aplicación.

Comando para crear una aplicación:

python manage.py startapp app_name

Aquí creo una aplicación con el nombre Inicio.

usando django crear sistema de inicio de sesiónCrear aplicación

Ahora, para incluir la aplicación en su proyecto, agregue el nombre de su aplicación a la lista de APLICACIONES INSTALADAS en settings.py del proyecto.

INSTALLED_APPS = [
    'home',
]

A continuación, defina la URL en el archivo urls.py de la aplicación.

from django.urls import path, include
from home import views

urlpatterns = [
    path('home/', views.home, name="home"),
]

Después de esto, defina la vista de la aplicación.

from django.shortcuts import render, HttpResponse

# Create your views here.

def home(request):
    return render(request, 'home.html')

A continuación, cree un archivo home.html dentro de la carpeta de plantillas de la aplicación Inicio.



  
    
    
    

    
    

    
  
  
    
    
        PythonGuides
        
        
              Home
            Search
    WELCOME TO PYTHON GUIDES

    
      Thanks for landing on this page to know more about PythonGuides.com.I welcome you to the website and hopefully, you got to learn something in Python. I started this website to share my finding and learnings in Python with you.To keep things simple, I am trying to write a lot of articles on Python. Feel free to give your valuable comments and also share the articles if you are liking and hoping it will be helpful to someone.ALSO, SUBSCRIBE TO OUR YOUTUBE CHANNEL FOR FREE PYTHON VIDEO TUTORIALS.
    

    
    

    
    
  

Ahora requerimos una redirección a la página siguiente. El siguiente código se puede agregar a settings.py para configurar la página siguiente:

LOGIN_REDIRECT_URL = next_page

En mi ejemplo, quiero redirigir a la página de inicio después de iniciar sesión correctamente.

LOGIN_REDIRECT_URL = 'home/'

página de inicio de sesión usando funciones integradas en djangoConfiguración de inicio de sesión

Si no se especifica una URL de redirección de inicio de sesión, se usará la URL predeterminada de /cuentas/perfil/ , lo que generará un problema con la plantilla no existe .

8. Crear superusuario

Hasta ahora, no hemos creado ningún usuario para esto. Entonces, vamos a crear un usuario. Así que mira, cómo podemos hacer eso.

Para crear un superusuario, ejecute el siguiente comando:

python manage.py createsuperuser
  • Luego ingrese el nombre de usuario de su elección, si lo desea. De lo contrario, toma el nombre del sistema predeterminado.
  • Luego ingrese la dirección de correo electrónico y presione enter. También puede dejarlo en blanco.
  • Luego, frente al campo Contraseña, escriba la contraseña y presione enter. Para mantenerlo seguro, ingrese una contraseña segura.
  • Luego ingrese nuevamente la misma contraseña para confirmar.

9. Ejecutar servidor

En esta sección, aprenderemos cómo ejecutar el servidor en Django. Para iniciar el servidor, use el siguiente comando en la terminal.

python manage.py runserver

La salida es la siguiente:

cómo crear un sistema de inicio de sesión integrado en django

Ahora, ingrese el nombre de usuario y la contraseña y haga clic en el botón de inicio de sesión. Después de iniciar sesión correctamente, será redirigido a la página de inicio.

cómo crear un sistema de inicio de sesión integrado usando djangoPágina de inicio

CÓMO CREAR DJANGO PERSONALIZAR EL SISTEMA DE INICIO DE SESIÓN

En esta sección, aprenderemos a crear una página de registro, una página de inicio de sesión y una página de cierre de sesión sin utilizar la función integrada de Django. Te guiaré paso a paso usando un ejemplo.

1. Pasos básicos

Antes de que podamos crear una página de registro, inicio de sesión o cierre de sesión, primero debemos realizar los siguientes procedimientos.

Crear proyecto: en primer lugar, debemos crear un proyecto Django. El comando para crear un proyecto Django es:

django-admin startproject project_name

Entonces, construí un proyecto llamado CustomLogin .

django personaliza el sistema de inicio de sesiónCrear proyecto

Crear aplicación: una vez que hayamos creado el proyecto Django, necesitaremos crear una aplicación Django. El comando para crear una aplicación Django es:

python manage.py startapp app_name

Entonces, construí una aplicación llamada cuentas .

python django personalizar el sistema de inicio de sesiónCrear aplicación

Instalar aplicación: después de haber creado la aplicación Django, necesitaremos instalar una aplicación Django. Para hacerlo, vaya al directorio de su proyecto y abra el archivo settings.py. Ahora, en INSTALLED_APPS, escriba el nombre de su aplicación.

django personaliza los pasos básicos del sistema de inicio de sesiónInstalar aplicación

Plantillas: necesitará una carpeta de plantillas para almacenar sus archivos HTML. Entonces, en el directorio de su aplicación, cree una carpeta de plantillas. Vaya al archivo settings.py y defina la ruta DIRS en las plantillas.

pasos básicos para crear un sistema de inicio de sesión personalizadoDefinir plantillas

2. Definir archivo de URL

Según Django, todos los recursos deben mapearse usando archivos urls.py.

Archivo de URL del proyecto : por defecto, Django incluye un archivo urls.py en el proyecto. Este archivo tiene una ruta predefinida a la aplicación de administración. Y definimos la ruta del archivo urls.py recién creado en la aplicación.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('accounts.urls'))
]

Archivo de URL de la aplicación: en primer lugar, debemos crear un archivo con el nombre urls.py en el directorio de la aplicación. Ahora, definimos la ruta de las diferentes vistas creadas en el archivo views.py de la aplicación.

from django.urls import path
from . import views


urlpatterns = [
    path("register", views.register, name="register"),
    path("login_user", views.login_user, name="login_user"),
    path("logout_user", views.logout_user, name="logout_user"),
    path("home", views.home, name="home")
]

3. REGISTRO

Ahora, aprenderemos a crear vistas de registro. Para esto, tenemos que crear un registro de función en el archivo views.py del directorio de la aplicación.

from django.contrib import messages
from django.shortcuts import render, redirect

def register(request):
    if request.method == 'POST':
        first_name = request.POST['first_name']
        last_name = request.POST['last_name']
        username = request.POST['username']
        email = request.POST['email']
        password = request.POST['password']
        confirm_password = request.POST['confirm_password']

        if password==confirm_password:
            if User.objects.filter(username=username).exists():
                messages.info(request, 'Username is already taken')
                return redirect(register)
            elif User.objects.filter(email=email).exists():
                messages.info(request, 'Email is already taken')
                return redirect(register)
            else:
                user = User.objects.create_user(username=username, password=password, 
                                        email=email, first_name=first_name, last_name=last_name)
                user.save()
                
                return redirect('login_user')


        else:
            messages.info(request, 'Both passwords are not matching')
            return redirect(register)
            

    else:
        return render(request, 'registeration.html')
  • Comenzamos definiendo la función de registro , que hace uso del objeto de solicitud. Django hace un HttpRequest cuando se solicita una página. En este caso, utilizaremos el método HTTP Post para enviar datos a un servidor con el fin de crear o actualizar un recurso.
  • Al servidor, enviamos first_name , last_name , username , email , password y confirm_password .
  • Luego usamos varios filtros de objetos para verificar si la contraseña es la misma que la contraseña de confirmación si la dirección de correo electrónico ya existe, e imprimimos el mensaje en consecuencia, así como redirigimos la página según la respuesta del filtro.
Te puede interesar:  Python Django convierte la fecha y la hora en una cadena

Ahora, veremos el registration.html :

El archivo registration.html especifica la apariencia de la página web de registro.





	
	
	

	
	

	



	
		{% csrf_token%}
		SIGN UPUsernameFirst NameLast NameEmail addressPasswordConfirm PasswordSIGNUP
			LOGIN
		
	
	
		{% for message in messages %}
		
			{{message}}
		
		{% endfor %}
	

	
	
	
	
	


  • Dentro del formulario, usamos la etiqueta de plantilla de Django {%csrf_token%} . Al usar esta etiqueta, podemos evitar ataques CSRF y garantizar la seguridad de las solicitudes de publicación de un usuario al servidor.
  • También usamos la etiqueta de plantilla de Django {%for%} para mostrar la notificación del mensaje.

Ahora, ejecute el servidor y vea la página web de registro.

django personaliza el registro del sistema de inicio de sesiónPágina de registro

5. INICIO DE SESIÓN

Ahora, aprenderemos a crear vistas login_user. Para ello, tenemos que crear una función login_user en el archivo views.py del directorio de la aplicación.

from django.contrib import messages
from django.shortcuts import render, redirect
from django.contrib.auth.models import User, auth

def login_user(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']

        user = auth.authenticate(username=username, password=password)

        if user is not None:
            auth.login(request, user)
            return redirect('home')
        else:
            messages.info(request, 'Invalid Username or Password')
            return redirect('login_user')



    else:
        return render(request, 'login.html')
  • Para comenzar, crearemos la función login_user, que utiliza el objeto de solicitud POST.
  • El nombre de usuario y la contraseña se envían al servidor.
  • A continuación, se utiliza la función de autenticación para verificar el nombre de usuario y la contraseña.
  • Si el usuario está autenticado, vaya a la página de inicio; de lo contrario, vaya a la página de inicio de sesión e imprima el mensaje Nombre de usuario o contraseña no válidos.

Ahora, veremos el login.html :

El archivo login.html especifica la apariencia de la página web de inicio de sesión.





    
    
    

    
    

    



    
        
            {% csrf_token%}
            LOGIN

            Username
            Password
            LOGIN
            
{% for message in messages %} {{message}} {% endfor %}
  • Para mostrar la notificación del mensaje, usamos la etiqueta de plantilla de Django {%for%} .

Lo redirigimos a la página de inicio de sesión después de registrarse con éxito, o puede pasar directamente a la página de inicio de sesión si ya es un usuario.

django personalizar el inicio de sesión del sistema de inicio de sesiónPágina de inicio de sesión

5. CASA

Ahora, aprenderemos a crear vistas de inicio. Para ello, tenemos que crear una función home en el archivo views.py del directorio de la aplicación.

from django.contrib import messages
from django.shortcuts import render, redirect

def home(request):
    return render(request, 'home.html')
  • Para comenzar, crearemos la función de inicio, con el objeto de solicitud.
  • La función de inicio redirige a home.html.

Ahora, veremos el home.html :

El archivo home.html especifica la apariencia de la página web de inicio.





  
  
  
  
  




  
  
  

  
    Login System
    
    
          HOME(current)
        
        {% if user.is_authenticated %}
        
          Hi, {{user.first_name}}
        
          LOGOUT
        
        {% else %}
        
          SIGN UP
        
          LOGIN
        
        {% endif %}
      

  WELCOME TO PYTHON GUIDES

  
    Thanks for landing on this page to know more about PythonGuides.com.I welcome you to the website and hopefully, you got to learn something in Python. I started this website to
        share my finding and learnings in Python with you.To keep things simple, I am trying to write a lot of articles on Python. Feel free to give your valuable
        comments and also share the articles if you are liking and hoping it will be helpful to someone.ALSO, SUBSCRIBE TO OUR YOUTUBE CHANNEL FOR FREE PYTHON VIDEO TUTORIALS.


  • Aquí usamos la etiqueta de plantilla {%if%} con el atributo is_authenticated para verificar si el usuario está autorizado o no.
  • Imprimimos el nombre del usuario en la barra de navegación si el usuario está autenticado. Usamos la etiqueta {{user.first_name}} para esto.
  • En la barra de navegación, también agregamos un botón de cierre de sesión.

Echemos un vistazo a la página de inicio, cuando el usuario inicie sesión correctamente.

cómo crear django personalizar el sistema de inicio de sesiónPágina de inicio

6. SALIR

Ahora, aprenderemos a crear vistas logout_user. Para ello, tenemos que crear una función logout_user en el archivo views.py del directorio de la aplicación.

from django.contrib import messages
from django.shortcuts import render, redirect
from django.contrib.auth.models import User, auth

def logout_user(request):
    auth.logout(request)
    return redirect('home')
  • Para comenzar, crearemos la función logout_user, con objeto de solicitud.
  • Para cerrar la sesión del usuario, usamos la función logout() de django.contrib.auth.
  • La función logout_user redirige a inicio.

Cuando hacemos clic en el botón de cerrar sesión, se llama a la función cerrar sesión(). Y limpió por completo los datos de la sesión para la solicitud actual.

Veamos cómo se ve la página de inicio cuando hacemos clic en el botón de cerrar sesión.

cómo crear un cierre de sesión en django personalizar el sistema de inicio de sesiónPágina de inicio

CÓMO CREAR UN SISTEMA DE INICIO DE SESIÓN DE MODELO MÚLTIPLE DE DJANGO

En esta sección, aprenderemos a usar Django para desarrollar un sistema de inicio de sesión con múltiples modelos. Este sistema de inicio de sesión consta de tres módulos: registro, inicio de sesión y cierre de sesión.

Pasos básicos

Antes de comenzar a aprender cómo desarrollar los tres módulos del sistema de inicio de sesión descrito anteriormente, primero debemos completar algunos procedimientos básicos y necesarios.

CREAR PROYECTO:

En primer lugar, debemos construir un proyecto Django. Y, para hacer un proyecto Django, usa el siguiente comando:

django-admin startproject MultiLogin
  • Entonces, aquí construyo un proyecto llamado MultiLogin

CREAR APLICACIÓN:

Tendremos que desarrollar una aplicación Django después de que hayamos terminado con el proyecto Django. Para hacer una aplicación Django, use el siguiente comando:

python manage.py startapp accounts
  • Entonces, aquí construyo una aplicación llamada cuentas .

INSTALAR APLICACIÓN:

Tendremos que instalar una aplicación Django después de haberla creado. Para hacerlo, abra el archivo settings.py en el directorio de su proyecto. Ahora escribe el nombre de tu aplicación en APLICACIONES INSTALADAS .

cómo crear Django modelo múltiple loINSTALAR APLICACIÓN

INSTALAR / ACTIVAR PLANTILLAS :

Para almacenar sus archivos HTML, necesitará una carpeta de plantillas. Cree una carpeta de plantillas en el directorio de su aplicación. Defina la ruta DIRS en plantillas en el archivo settings.py .

cómo crear un sistema de inicio de sesión de modelos múltiples de python djangoMODELO

Definir archivo de URL

Después de crear un proyecto y una aplicación, debemos crear un archivo de URL, ya que todos los recursos deben asignarse utilizando estos archivos de acuerdo con Django.

ARCHIVO DE URL DEL PROYECTO:

Django incluye un archivo urls.py en el proyecto ( MultiLogin ) por defecto. Agregue el siguiente código en este archivo.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('accounts.urls'))
]
  • En este archivo, la ruta de la aplicación de administración está predefinida.
  • Ahora, tenemos que especificar la ubicación del archivo urls.py dentro de la aplicación (cuentas) .

ARCHIVO DE URL DE LA APLICACIÓN:

De forma predeterminada, una aplicación no consta de ningún archivo urls.py. Primero, tenemos que crear un archivo con el nombre urls.py en el directorio de la aplicación (cuentas) .

from django.urls import path
from . import views


urlpatterns = [
    path('register/', views.register, name="register"),
    path('login/', views.login_user, name="login_user"),
    path('logout/', views.logout_user, name="logout_user"),
    path('home/', views.home, name="home"),
    path('student_register/', views.student_register.as_view(), name="student_register"),
    path('teacher_register/', views.teacher_register.as_view(), name="teacher_register")
]
  • Aquí, definimos la ruta de las diferentes vistas creadas en el archivo views.py de la aplicación.

Crear modelo

Básicamente, una tabla en su base de datos es un modelo de Django. Y, de manera predeterminada, obtuvimos una base de datos SQLite vacía ubicada en la carpeta raíz de su proyecto (MUTILOGIN) cuando construimos el proyecto en Django. Entonces, para hacer una nueva mesa, necesitaremos hacer un nuevo modelo.

Abra el archivo models.py en la carpeta de cuentas. Y por defecto, está vacío, así que agrega el siguiente código:

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    is_student = models.BooleanField(default=False)
    is_teacher = models.BooleanField(default=False)
    first_name = models.CharField(max_length=80)
    last_name = models.CharField(max_length=80)

class Student(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    phone_number = models.CharField(max_length=10)
    class_name = models.CharField(max_length=100)

class Teacher(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    phone_number = models.CharField(max_length=10)
    department = models.CharField(max_length=30)

Entonces, aquí creamos tres clases nombradas como Usuario, Estudiante y Profesor. Entonces, analicemos cada clase en detalle:

  • Clase de usuario:
    • Aquí, creamos un modelo de usuario personalizado y ampliamos su funcionalidad mediante el uso de AbstractUser.
    • Entonces, AbstractUser es un modelo que tiene campos completos, similar a una clase abstracta para que pueda heredar fácilmente los campos que necesita en otra clase de modelo también.
  • Clase de estudiante:
    • Aquí, creamos la clase modelo Student. Y en esta clase definimos una relación uno a uno entre los campos de la clase Usuario que creamos anteriormente.
    • Además, creamos un campo de texto «phone_number» y contendrá el número de teléfono del estudiante con una longitud máxima de 10.
    • Luego, creamos un campo de texto más «class_name» y contendrá la clase del estudiante.
  • Clase de profesor:
    • Aquí, creamos la clase modelo Teacher. Y en esta clase definimos nuevamente una relación uno a uno entre los campos de la clase Usuario que creamos anteriormente.
    • Además, creamos un campo de texto «phone_number» y contendrá el número de teléfono del maestro con una longitud máxima de 10.
    • Luego, creamos un campo de texto más «departamento» y contendrá el departamento en el que está trabajando el maestro.
Te puede interesar:  Cómo analizar CSV en Python Django

Modelo de registro

Abra el archivo admin.py en la carpeta de cuentas. Y por defecto, está vacío, así que agrega el siguiente código:

from django.contrib import admin
from .models import User, Student, Teacher
# Register your models here.

admin.site.register(Student)
admin.site.register(Teacher)
  • Entonces, aquí registramos los dos modelos creados anteriormente, es decir, el modelo de estudiante y el modelo de maestro con la interfaz de administración.

Crear formulario

Un formulario es una página que contiene múltiples campos o espacios para ingresar datos por usuario. Cree y abra el archivo Forms.py en la carpeta de cuentas. De forma predeterminada, está vacío, así que agregue el siguiente código:

from django.contrib.auth.forms import UserCreationForm
from django.db import transaction
from django import forms
from .models import Student, Teacher, User

class StudentSignUpForm(UserCreationForm):
    first_name = forms.CharField(required=True)
    last_name = forms.CharField(required=True)
    phone_number = forms.CharField(required=True)
    class_name = forms.CharField(required=True)

    class Meta(UserCreationForm.Meta):
        model = User
    
    @transaction.atomic
    def data_save(self):
        user = super().save(commit=False)
        user.first_name = self.cleaned_data.get('first_name')
        user.last_name = self.cleaned_data.get('last_name')
        user.is_student = True
        user.save()
        student = Student.objects.create(user=user)
        student.class_name = self.cleaned_data.get('class_name')
        student.phone_number = self.cleaned_data.get('phone_number')
        student.save()
        return user


class TeacherSignUpForm(UserCreationForm):
    first_name = forms.CharField(required=True)
    last_name = forms.CharField(required=True)
    department = forms.CharField(required=True)

    class Meta(UserCreationForm.Meta):
        model = User
    
    @transaction.atomic
    def data_save(self):
        user = super().save(commit=False)
        user.first_name = self.cleaned_data.get('first_name')
        user.last_name = self.cleaned_data.get('last_name')
        user.is_teacher = True
        user.save()
        teacher = teacher.objects.create(user=user)
        teacher.phone_number = self.cleaned_data.get('phone_number')
        teacher.department = self.cleaned_data.get('department')
        teacher.save()
        return user

Entonces, aquí creamos dos clases de formulario llamadas StudentSignUpForm y TeacherSignUpForm Entonces, analicemos cada clase en detalle:

  • StudentSignUpForm:
    • Django tiene un sistema de autenticación de usuario integrado. Entonces, aquí estamos importando módulos de autenticación de usuario que nos permiten crear el registro del estudiante.
    • Y aquí, usamos UserCreationForm que se usa para crear un nuevo usuario para nuestra aplicación. De forma predeterminada, hay tres campos en este formulario: nombre de usuario , contraseña y confirmar contraseña .
    • Y además de esto, creamos cuatro campos de texto first_name , last_name , phone_number y class_name respectivamente.
    • Definimos la clase Meta ya que necesitamos agregar datos sobre el usuario del modelo.
    • Luego usamos la transacción atómica para el formulario de registro de estudiantes, que es una secuencia de una o más operaciones SQL que se tratan como una unidad. Y el objetivo de la transacción atómica es proporcionar cuatro propiedades comúnmente conocidas como ACID.
  • Formulario de registro del maestro:
    • Aquí estamos importando módulos de autenticación de usuario que nos permiten crear el registro del maestro.
    • A continuación, usamos UserCreationForm que se usa para crear un nuevo usuario para nuestra aplicación. De forma predeterminada, hay tres campos en este formulario: nombre de usuario , contraseña y confirmar contraseña .
    • Luego, además de esto, creamos tres campos de texto first_name , last_name y department respectivamente.
    • Definimos la clase Meta ya que necesitamos agregar datos sobre el modelo de usuario.
    • Luego usamos la transacción atómica para el formulario de registro de maestros, ya que el objetivo de la transacción atómica es proporcionar cuatro propiedades comúnmente conocidas como ACID.

Definir archivo de vistas

Básicamente, las vistas de Django, como los documentos HTML, son funciones de Python que toman solicitudes http y devuelven respuestas http. Entonces, podemos decir que los sitios web basados ​​en Django tienen muchas vistas con varias tareas y objetivos.

Además, las vistas a menudo se almacenan en un archivo llamado views.py en la carpeta de la aplicación. De forma predeterminada, está vacío, así que agregue el siguiente código:

from email import message
from django.shortcuts import render, redirect
from django.contrib.auth import login, logout,authenticate
from django.contrib.auth.forms import AuthenticationForm
from django.contrib import messages
from django.views.generic import CreateView
from .models import User
from .forms import StudentSignUpForm, TeacherSignUpForm

# Create your views here.

def home(request):
    return render(request, 'home.html')

def register(request):
    return render(request, 'register.html')

class student_register(CreateView):
    model = User  
    form_class = StudentSignUpForm
    template_name="student_register.html"

    def form_valid(self, form):
        user = form.save()
        login(self.request, user)
        return redirect('/accounts/home')

class teacher_register(CreateView):
    model = User  
    form_class = TeacherSignUpForm
    template_name="teacher_register.html"

    def form_valid(self, form):
        user = form.save()
        login(self.request, user)
        return redirect('/accounts/home')

def login_user(request):
    if request.method=='POST':
        form = AuthenticationForm(data=request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            user = authenticate(username=username, password=password)
            if user is not None :
                login(request,user)
                return redirect('/accounts/home')
            else:
                messages.error(request,"Invalid username or password")
        else:
            messages.error(request,"Invalid username or password")
    return render(request, 'login.html',context={'form':AuthenticationForm()})

def logout_user(request):
    logout(request)
    return redirect('/accounts/home')

Por lo tanto, aquí creamos seis vistas denominadas home , register , student_register , teacher_register , login_user y logoout_user . Entonces, analicemos cada vista en detalle:

  • hogar:
    • En la vista de inicio, simplemente representamos la plantilla ‘home.html’ .
  • Registrarse:
    • En la vista de registro, simplemente representamos la plantilla ‘register.html’ .
  • estudiante_abogado:
    • Luego, creamos la clase student_register basada en la vista genérica.
    • A continuación, usamos CreateView ya que se requiere StudentSignUpForm en la página y se requiere una inserción en la base de datos al enviar un formulario válido.
  • maestro_registro:
    • Luego, creamos la clase teacher_register basada en la vista genérica.
    • A continuación, usamos CreateView ya que se requiere TeacherSignUpForm en la página y se requiere una inserción en la base de datos al enviar un formulario válido .
  • login_user:
    • Crearemos la vista login_user , que utiliza el objeto de solicitud POST.
    • El nombre de usuario y la contraseña se envían al servidor.
    • A continuación, se utiliza la función de autenticación para verificar el nombre de usuario y la contraseña.
    • Si el usuario está autenticado, vaya a la página de inicio; de lo contrario, vaya a la página de inicio de sesión e imprima el mensaje Nombre de usuario o contraseña no válidos.
  • cerrar sesión_usuario:
    • Con el objeto de solicitud, crearemos la función de usuario de cierre de sesión.
    • A continuación, se usa la función logout() de django.contrib.auth para cerrar la sesión del usuario.
    • En el cierre de sesión exitoso, el usuario lo regresará a su ‘ página de inicio’ .

Crear plantillas

Aprendimos de Django que el resultado debe estar en HTML y los archivos HTML se crean en una plantilla.

Así que cree una carpeta de plantillas dentro de la carpeta raíz (MULTILOGIN) y cree cinco archivos HTML llamados ‘home.html’ , ‘ login.html’ , ‘register.html’ , ‘student_register.html’ y ‘teacher_regsiter.html’ .

Entonces, analicemos y creemos cada archivo HTML:

  • casa.html:
    • El archivo home.html especifica la apariencia de la página web de inicio. Y el siguiente es el código del archivo home.html .
    • Aquí usamos   la etiqueta de plantilla  {%if%} con el atributo is_authenticated  para verificar si el usuario está autorizado o no.
    • Imprimimos el nombre de usuario Hola si el usuario está autenticado. Usamos la etiqueta  {{user.get_username}}  para esto.
    • También añadimos un botón de cierre de sesión.




    
    
    
    



    WELCOME TO PYTHONGUIDES

    {% if user.is_authenticated%}
    Hi {{user.get_username}}
    Logout 
{% else %} Register
Login {% endif %}
  • iniciar sesión.html
    • El archivo login.html especifica la apariencia de la página web de inicio de sesión. Y el siguiente es el código del archivo login.html .
    • Aquí, agregamos el enlace de student_register y teacher_register .




    
    
    
    




    LOGIN

    
        {% csrf_token %}
        {{form.as_p}}

            

  • registrarse.html:
    • El archivo register.html especifica la apariencia de la página web de registro. Y el siguiente es el código del archivo register.html .



    
    
    
    



    
        USER REGISTRATION
                        I am a student
                       
                        I am an teacher
                       
      
  

  • estudiante_registro.html:
    • El archivo student_register.html especifica la apariencia de la página web de registro de estudiantes. Y el siguiente es el código del archivo student_register.html .




    
    
    
    




     STUDENT REGISTERATION FORM
    
        {% csrf_token %}
        {{form.as_p}}
        


  • registro_profesor.html:
    • El archivo teacher_register.html especifica la apariencia de la página web de registro de profesores. Y el siguiente es el código del archivo teacher_register.html .




  
  
  
  



  TEACHER REGISTERATION FORM
  
    {% csrf_token %}
    {{form.as_p}}
    


Pasos para ejecutar la aplicación Django

HACER MIGRACIONES:

Si los modelos han sido modificados, este comando prepara un archivo makemigrations para nuestro nuevo modelo. Ejecute el siguiente comando en la terminal.

python manage.py makemigartions

EMIGRAR:

El comando de migración ejecuta las instrucciones proporcionadas en el archivo de migraciones recientes de la base de datos. Ejecute el siguiente comando en la terminal.

python manage.py migrate

EJECUTAR SERVIDOR:

Para ejecutar el servidor de desarrollo, ejecute el siguiente comando en la terminal.

python manage.py runserver

Producción

sistema de inicio de sesión de modelo múltiple en python djangoPágina de inicio Sistema de inicio de sesión de modelos múltiples

En la página de inicio tenemos dos opciones Registrarse e Iniciar sesión. Si es un usuario nuevo, haga clic en ‘Registrarse’. Y si ya estás registrado haz clic en ‘Iniciar sesión’.

sistema de inicio de sesión de modelo múltiple en django pythonPágina de registro

Cuando hacemos clic en Registrarse, tenemos dos opciones ‘Soy un estudiante’ y ‘Soy un profesor’. Si es estudiante, haga clic en los de estudiante; de ​​lo contrario, haga clic en los de profesor.

sistema de inicio de sesión de modelo múltiple djangoRegistro de estudiantes

Si hace clic en ‘Soy un estudiante’ obtendrá una página como esta.

python django sistema de inicio de sesión de múltiples modelosInicio de sesión del estudiante

Cuando haga clic en Registrarse, la página se verá así.

sistema de inicio de sesión de modelo múltiple en python djangoSistema de inicio de sesión multimodelo

Cuando hacemos clic en Cerrar sesión, pasamos a la página de inicio.

iniciar sesión python django sistema de inicio de sesión de modelo múltiplePágina de inicio de sesión

Cuando hagamos clic en Iniciar sesión, nos moveremos a la página de inicio de sesión. Y cuando haga clic en Iniciar sesión, volverá a la página de inicio con su nombre de usuario y Hola.

sistema de inicio de sesión de modelo múltiple en django pythonPágina de registro

Si haces clic en Soy profesor.

registrar el sistema de inicio de sesión de múltiples modelos de djangoRegistro de profesores

Se moverá a la página teacher_register donde el profesor se registra.

sistema de inicio de sesión python django con modelo múltiplePágina de inicio del maestro

Se moverá a la página de inicio donde obtendrá el nombre de usuario del maestro y el mensaje Hola. Y si hace clic en el botón Cerrar sesión, pasará a la página de inicio principal, donde tenemos dos opciones: Registrarse o Iniciar sesión.

Ryley Crooks

En los Estados Unidos, Python es uno de los lenguajes más utilizados. He usado Python durante mucho tiempo y he trabajado con una variedad de bibliotecas, desde Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc. Comparto contigo mi experiencia de trabajo de muchos años en el campo de la IA.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos
Responsable Birdie Bashirian PhD +info...
Finalidad Gestionar y moderar tus comentarios. +info...
Legitimación Consentimiento del interesado. +info...
Destinatarios No se cederán datos a terceros, salvo obligación legal +info...
Derechos Acceder, rectificar y cancelar los datos, así como otros derechos. +info...
Información adicional Puedes consultar la información adicional y detallada sobre protección de datos en nuestra página de política de privacidad.

Botón volver arriba