я сделал регистрацию а как сделать заход на сайт то есть login in не понимаю помогите плиз
views.py
from django.views.decorators.csrf import csrf_protect
from .forms import RegisterForm
from django.shortcuts import render, redirect
from django.contrib.auth import login, authenticate
@csrf_protect
def register(request):
if request.method == 'POST':
form = RegisterForm(request.POST)
username = request.POST['username']
password1 = request.POST['password1']
password2 = request.POST['password2']
email = request.POST['email']
context = {'form': form,
'username': username,
'password1': password1,
'password2': password2,
'email': email}
if form.is_valid():
form.save()
user = authenticate(username=username, password=password1)
login(request, user)
return redirect('/')
else:
form = RegisterForm()
context = {'form': form}
return render(request, 'registration/registred.html', context)
forms.py
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django import forms
class RegisterForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ('username', 'email', 'password1', 'password2')
def clean_email(self):
email = self.cleaned_data['email'].strip()
if User.objects.filter(email__iexact=email).exists():
raise forms.ValidationError('Пользователь с таким email уже существует')
return email
urls.py
urlpatterns =[
path('register', views.register, name='register'),
]
registred.html
{% extends "ShapeHtml/wrapper.html" %}
{% block content %}
<form method="post" action="{% url 'register' %}">
{% csrf_token %}
<h3>Введите Логин</h3> <input type="text" name="username" value="{{ username }}"> <br>
<h3>Введите Почту</h3> <input type="email" name="email" value="{{ email }}"> <br>
<h3>Введите Пороль</h3> <input type="password" name="password1" value="{{ password1 }}"> <br>
<h3>Повторите пороль</h3><input type="password" name="password2" value="{{ password2 }}"> <br>
<input type="submit">
</form>
{% endblock %}
Вот рабочий пример:
urls.py:
from django.contrib.auth.views import LoginView
...
urlpatterns = [
path(r'login/', LoginView.as_view(template_name='myapp/login.html'), name='login'),
...
]
login.html:
...
<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<input type="text" name="username">
<input type="password" name="password">
<input type="submit">
</form>
...
Примечание: данный код не идеален, это учебный пример. После понятия принципа, рекомендую Вам переписать его. Как минимум, советую использовать формы Django
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости