Проблема с аутентификацией пользователя в ДжангоPython

Программы на Python
Ответить
Anonymous
 Проблема с аутентификацией пользователя в Джанго

Сообщение Anonymous »

По неизвестной мне причине при аутентификации пользователя я ввожу следующие данные: адрес электронной почты и пароль, в результате суперпользователи аутентифицируются, а обычные пользователи - нет.
Что с этим можно сделать? Кто-нибудь сталкивался с такой проблемой? Помогите пожалуйста решить эту проблему, я совсем новичок в Django.
Вот файлы в проекте (если нужны другие файлы, пишите):
views.py

Код: Выделить всё

from django.contrib.auth import authenticate, login
from django.http import HttpResponse
from django.shortcuts import render, redirect
from users.models import User

def register(request):
if request.method == "POST":
username = request.POST.get("username")
email = request.POST.get("email")
password = request.POST.get("password")
# password2 = request.POST.get("password2")
phone_number = request.POST.get("phone_number")

user = User (
username = username,
email = email,
password = password,
phone_number = phone_number
)
user.save()
return redirect('main:index')
return render(request, 'users/register.html')

def user_login(request):
if request.method == "POST":
email = request.POST.get("email")
password = request.POST.get("password")
user = authenticate(email=email, password=password)
if user and user.is_active:
login(request, user)
return HttpResponse('Authenticate!')
else:
return HttpResponse('No Login!')
return render(request, 'users/login.html')

models.py

Код: Выделить всё

from django.db import models
from phonenumber_field.modelfields import PhoneNumberField
from django.contrib.auth.models import AbstractUser
from users.managers import CustomUserManager

class User (AbstractUser):
username = models.CharField(max_length=20, unique=True)
email = models.EmailField(unique=True)
password = models.CharField(null=True, blank=False, max_length=30)
phone_number = PhoneNumberField(region="IN", unique=True, null=True, blank=False)

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']

objects = CustomUserManager()

def __str__(self):
return self.username
managers.py

Код: Выделить всё

from django.contrib.auth.base_user import BaseUserManager

class CustomUserManager(BaseUserManager):
use_in_migrations = True

def _create_user(self, email=None, password=None, username=None, **extra_fields):
if email:
email = self.normalize_email(email)

user = self.model(username=username, **extra_fields)
user.email = email
user.set_password(password)
user.save(using=self._db)
return user

def create_user(self, email=None, password=None, username=None, **extra_fields):
extra_fields.setdefault('is_superuser', False)
extra_fields.setdefault('is_staff', False)
extra_fields.setdefault('is_active', True)

return self._create_user(email, password, username, **extra_fields)

def create_superuser(self, email=None, password=None, username=None, **extra_fields):
extra_fields.setdefault('is_superuser', True)
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_active', True)

return self._create_user(email, password, username, **extra_fields)
admin.py

Код: Выделить всё

from django.contrib import admin
from .models import User

admin.site.register(User)
class UserAdmin(admin.ModelAdmin):
list_display = ('id', 'username')
settings.py

Код: Выделить всё

AUTH_USER_MODEL = 'users.User'
Я жду, пока сработает аутентификация и созданные пользователи смогут войти на мой сайт. Еще хотелось бы разобраться подробнее, почему суперпользователь может пройти аутентификацию, а пользователь, созданный на сайте, не может.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-django
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»