Django Regístrese e inicie sesión con confirmación Correo electrónico | Python

Django proporciona por defecto una configuración del sistema de autenticación . Los objetos de usuario son el núcleo del sistema de autenticación. Hoy implementaremos el sistema de autenticación de Django.
 

Módulos requeridos: 

pip install --upgrade django-crispy-forms

Configuración básica:
Inicie un proyecto con el siguiente comando:

 django-admin startproject project

Cambiar directorio a proyecto –

 cd project

Inicie el servidor: inicie el servidor escribiendo el siguiente comando en la terminal:

 python manage.py runserver

Para verificar si el servidor se está ejecutando o no, vaya a un navegador web e ingrese http://127.0.0.1:8000/ como URL.
Ahora detenga el servidor presionando

ctrl-c

Vamos a crear una aplicación ahora llamada «usuario». 

python manage.py startapp user

Vaya a usuario/carpeta haciendo: cd usuario y cree una plantilla de carpeta con los archivos index.html, login.html, Email.html, register.html .
 

Abra la carpeta del proyecto con un editor de texto. La estructura del directorio debería verse así:
 

Ahora agregue la aplicación «usuario» y «crispy_form» en su todo_site en settings.py, y agregue 

CRISPY_TEMPLATE_PACK = 'bootstrap4'

al final de settings.py 
 

configure los ajustes de correo electrónico en setting.py:
 

coloque su correo electrónico y contraseña aquí.
 

Edite el archivo urls.py en el proyecto:  

Python3

from django.contrib import admin
from django.urls import path, include
from user import views as user_view
from django.contrib.auth import views as auth
  
urlpatterns = [
  
    path('admin/', admin.site.urls),
  
    ##### user related path########################## 
    path('', include('user.urls')),
    path('login/', user_view.Login, name ='login'),
    path('logout/', auth.LogoutView.as_view(template_name ='user/index.html'), name ='logout'),
    path('register/', user_view.register, name ='register'),
  
]

Edite urls.py en el usuario:
 

Python3

from django.urls import path, include
from django.conf import settings
from . import views
from django.conf.urls.static import static
  
urlpatterns = [
         path('', views.index, name ='index'),
]

Edite views.py en el usuario:

Python3

from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth import authenticate, login
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import AuthenticationForm
from .forms import UserRegisterForm
from django.core.mail import send_mail
from django.core.mail import EmailMultiAlternatives
from django.template.loader import get_template
from django.template import Context
   
   
#################### index####################################### 
def index(request):
    return render(request, 'user/index.html', {'title':'index'})
   
########### register here ##################################### 
def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            email = form.cleaned_data.get('email')
            ######################### mail system #################################### 
            htmly = get_template('user/Email.html')
            d = { 'username': username }
            subject, from_email, to = 'welcome', 'your_email@gmail.com', email
            html_content = htmly.render(d)
            msg = EmailMultiAlternatives(subject, html_content, from_email, [to])
            msg.attach_alternative(html_content, "text/html")
            msg.send()
            ################################################################## 
            messages.success(request, f'Your account has been created ! You are now able to log in')
            return redirect('login')
    else:
        form = UserRegisterForm()
    return render(request, 'user/register.html', {'form': form, 'title':'reqister here'})
   
################ login forms################################################### 
def Login(request):
    if request.method == 'POST':
   
        # AuthenticationForm_can_also_be_used__
   
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username = username, password = password)
        if user is not None:
            form = login(request, user)
            messages.success(request, f' wecome {username} !!')
            return redirect('index')
        else:
            messages.info(request, f'account done not exit plz sign in')
    form = AuthenticationForm()
    return render(request, 'user/login.html', {'form':form, 'title':'log in'})

Configura tu correo electrónico aquí.
 

Ahora crea un formularios.py en el usuario:

Python3

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
  
  
  
class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()
    phone_no = forms.CharField(max_length = 20)
    first_name = forms.CharField(max_length = 20)
    last_name = forms.CharField(max_length = 20)
    class Meta:
        model = User
        fields = ['username', 'email', 'phone_no', 'password1', 'password2']

Navegue a plantillas/usuario/ y edite archivos: 

Hacer migraciones y migrarlos. 

python manage.py makemigrations
python manage.py migrate

Ahora puede ejecutar el servidor para ver su aplicación.

python manage.py runserver

Publicación traducida automáticamente

Artículo escrito por itsvinayak y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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