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:
- django: instalación de django
- formas_crujientes:
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:
- enlace al archivo index.html
- enlace a Correo electrónico.html
- enlace a inicio de sesión.html
- enlace a registrarse.html
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