Созданный пользователь не проходит аутентификацию Djnago
Мне нужно создать пользователя через админ панель. Что бы он потом мог зайти на сайт(в будущем планируется разграничение доступа) Я наследуюсь от модели AbstractUser
models.py
class AdvUser(AbstractUser):
position = models.ForeignKey('JobTitle', on_delete=models.PROTECT,
max_length=100, verbose_name="Должность работника",
related_name='positions',null=True)
def __str__(self):
return f" {self.first_name} {self.last_name}"
class Meta:
verbose_name = 'Пользователь'
verbose_name_plural = 'Пользователи'
class JobTitle(models.Model): # Должность работника
position = models.CharField('Название', max_length=100, blank=True,null=True)
def __str__(self):
return f" {self.position}"
class Meta:
verbose_name = 'Должность работника'
verbose_name_plural = 'Должности работников'
В settings.py
AUTH_USER_MODEL = 'logic_TORA.AdvUser'
views.py
def loginPage(request):
if request.method == "POST":
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('logic_TORA:home')
else:
# messages.info(request, 'Username or password incorrect')
print('не вошел')
print(user)
context = {}
return render(request, 'registration/login.html', context)
def logout_request(request):
context = {}
return render(request, "registration/logged_out.html", context)
def home(request):
context = {}
return render(request, "home.html", context)
admin.py
@admin.register(AdvUser)
class AdminViewAdvUser(admin.ModelAdmin):
list_display = ('username', 'first_name', 'last_name', 'position',)
search_fields = ('first_name',)
list_filter = ('position', 'groups')
@admin.register(JobTitle)
class AdminViewJobTitle(admin.ModelAdmin):
list_display = ('position',)
urls.py
app_name = 'logic_TORA'
urlpatterns = [
path("login/", loginPage, name="login"),
path("logout/", logout_request, name='logout'),
path('', home, name='home'),
login.html
<h1>Login</h1>
{% load static %}
{% block content %}
<main>
<div class="p-3">
{% if user.is_authenticated %}
<p>Вы уже выполнили вход</p>
{% else %}
<form method="POST" action="">
{% csrf_token %}
<input type="text" name="username" >
<input type="password" name="password" >
<input type="submit" value="login">
</form>
{%endif%}
</div></main>
{% endblock %}
Я могу зайти от суперюзера на сайт(в админку и так захожу ,всё нормально) и меня редиректит на home.html Но когда я создаю пользователя в админ панели и через него пытаюся зайти на сайт(не в админку!) то форма обновляется и ничего не происходит. Во views я написал print(user) в котором мне после ввода пароля в консоли пишет None. Я не могу понять почему так происходит. Я думаю это может быть связано с тем что я наследуюсь от AbstractUser но не вижу связи. помогите пожалуйста.
Я переписал модели и все получилось.
models.py
class UserProfile(models.Model):
user = models.OneToOneField(User, verbose_name='Пользователь',on_delete=models.PROTECT)
group = models.OneToOneField(Group, verbose_name='Группа', on_delete=models.PROTECT)
position = models.OneToOneField('JobTitle', on_delete=models.PROTECT,
max_length=100, verbose_name="Должность работника",
related_name='positions', null=True)
class JobTitle(models.Model): # Должность работника
position = models.CharField('Название', max_length=100, blank=True,null=True)
def __str__(self):
return f" {self.position}"
class Meta:
verbose_name = 'Должность работника'
verbose_name_plural = 'Должности работников'