Авторизация на Django
Я пытаюсь сделать авторизацию. Регистрация через форму у меня уже есть. Когда зарегистрировались, автомотически переход на авторизцию. Мне необходимо выводить сообщение, если пользователь не найден, а если найдет, по кнопке переход на главную страницу. У меня не сообщение не выходит ни на главную не переходит. В чем может быть дело. Делала по шаблону
views.py
# from django.shortcuts import render
from django.shortcuts import render, redirect
from django.contrib import auth
from .forms import AnketaForm
from .forms import RegistrationForm
# Это наша форма, которую мы определим в forms.py
# from .forms import AuthenticationForm
# Это наша форма, которую мы определим в forms.py
# from .forms import AuthenticationForm
from .models import Personal
# Это наша форма, которую мы определим в forms.py
from .forms import AuthenticationForm
# Create your views here.
def index(request):
msg ='Заполните все поля данных'
if request.method == "POST":
form = AnketaForm(request.POST)
if form.is_valid():
anketa = form.save(commit=False)
anketa.save()
msg = 'Ваши данные добавлены!'
return render(request, 'logistic/index.html', {'form': form, 'message': msg,})
else:
form = AnketaForm()
return render(request, 'logistic/index.html', {'form': form, 'message': msg,})
def about_company(request):
return render(request, 'logistic/about_company.html')
def contacts(request):
return render(request, 'logistic/contacts.html')
def questions_reviews(request):
return render(request, 'logistic/questions-reviews.html')
def vacancies(request):
return render(request, 'logistic/vacancies.html')
def services(request):
return render(request, 'logistic/services.html')
def contacts_worker(request):
return render(request, 'logistic/contacts_worker.html')
def regist(request):
msg ='Заполните все поля данных'
if request.method == "POST":
form = RegistrationForm(request.POST)
if form.is_valid():
Personal = form.save(commit=False)
Personal.save()
msg = 'Ваши данные добавлены!'
return redirect('authoriz')
else:
form = RegistrationForm()
return render(request, 'logistic/index-registration.html', {'form': form, 'message': msg,})
def authoriz(request):
error = ''
if request.POST:
form = AuthenticationForm(request.POST)
if form.is_valid():
user = request.POST.get("username")
pas = request.POST.get("password")
users = auth.authenticate(username=user, password=pas)
print(user)
print(pas)
if users is not None:
auth.login(request, users)
return redirect('home')
else:
error = 'Такого пользователя не существует!'
else:
form = AuthenticationForm()
return render(request, 'logistic/index-authorization.html', {'form': form, 'error': error,})
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='home'),
path('about_company', views.about_company, name='about_company'),
path('contacts', views.contacts, name='contacts'),
path('questions_reviews', views.questions_reviews, name='questions_reviews'),
path('vacancies', views.vacancies, name='vacancies'),
path('services', views.services, name='services'),
path('contacts_worker', views.contacts_worker, name='contacts_worker'),
path('a/', views.authoriz, name='authoriz'),
path('r/', views.regist, name='regist'),
# path('authentication', views.authentication, name='authentication'),
# path('new_anketa/', views.new_anketa, name='new_anketa'),
]
forms.py
from .models import Anketa
from django.forms import ModelForm, TextInput, DateInput
from .models import Personal
from django import forms
class AnketaForm(forms.ModelForm):
class Meta:
model = Anketa
fields = ['q1', 'q2', 'q3', 'q4', 'q5', 'q6', 'q7', 'q8', 'q9']
widgets = {
"q1": TextInput(attrs={
'class': 'window_question_1',
}),
"q2": TextInput(attrs={
'class': 'window_question_2',
}),
"q3": TextInput(attrs={
'class': 'window_question_3',
}),
"q4": TextInput(attrs={
'class': 'window_question_4',
}),
"q5": TextInput(attrs={
'class': 'window_question_5',
}),
"q6": TextInput(attrs={
'class': 'window_question_6',
}),
"q7": TextInput(attrs={
'class': 'window_question_7',
}),
"q8": TextInput(attrs={
'class': 'window_question_8',
}),
"q9": TextInput(attrs={
'class': 'window_question_9',
}),
}
class RegistrationForm(forms.ModelForm):
class Meta:
model = Personal
fields = ['fio', 'date', 'username', 'password']
widgets = {
"fio": TextInput(attrs={
'id': 'fio_input',
}),
"date": DateInput(attrs={
'id': 'date_input',
'type': 'date',
}),
"username": TextInput(attrs={
'id': 'login_input',
}),
"password": TextInput(attrs={
'id': 'password_input',
'type': 'password',
}),
}
class AuthenticationForm(forms.ModelForm):
class Meta:
model = Personal
fields = ['username', 'password']
widgets = {
"username": TextInput(attrs={
'id': 'login_input_autho',
}),
"password": TextInput(attrs={
'id': 'password_input_autho',
'type': 'password',
})
}
index-authorization.html
<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" id="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}Авторизация{% endblock %}</title>
<link rel = "stylesheet" href="{% static 'logistic/css/registration and authorization.css' %}">
</head>
<body>
<div class = "body">
<img src = "{% static 'logistic/image/1900/1900-background.png' %}"/>
</div>
<form>
<div class = "window_registration_autho">
<div id = "header_registration_autho">Авторизация</div>
<div id = "car_autho"><img src = "{% static 'logistic/image/background_car_autho.png' %}"/></div>
<form action= "" method="POST">
{{ form.as_p }}
<div class = "window_input_autho">
<div id = "login_autho">Логин</div>
<div id = "password_autho">Пароль</div>
</div>
<input type="submit" class="button-registration_autho">Войти!</input>
{% csrf_token %}
</form>
<div class = "msg_autho">
{{error}}
</div>
</div>
</body>
</html>
Источник: Stack Overflow на русском