Как расширить пользовательскую модель по умолчанию в django2.12 - PullRequest
0 голосов
/ 06 июня 2019

Я работаю над проектом и не использую пользовательскую модель django по умолчанию, вместо этого я использую свою собственную пользовательскую модель. но я испытываю проблему. Для моей пользовательской модели я также создал свой собственный файл authb.py, который я предоставил ниже, и если я использую аутентификацию django по умолчанию, то она аутентифицирует только моего суперпользователя, а не пользователя, которого я ввожу через форму регистрации, и я я полностью застрял.

сначала вот мой authb.py из .models import User

class AuthB:

def authenticate(self, username=None, password=None):
    try:
        user = User.objects.get(username=username)
        return user
    except:
        return None

def get_user(self, user_id):
    try:
        return User.objects.get(pk=user_id)
    except:
        return None

но сейчас я не использую этот authb, вместо этого я использую аутентификацию по умолчанию. вот мой models.py для пользовательской модели

class User(models.Model):
is_authenticated = True
username = models.CharField(max_length= 25)
email = models.CharField(max_length= 150)
password = models.CharField(max_length= 100)
last_login = models.DateTimeField(auto_now= True)
profilepic = models.CharField(max_length= 255, default= "")

def __str__(self):
    return self.username

вот мой файл views.py

def signup(request):
# context = {}
# return render(request, 'sign-up.html', context)


if request.method == 'POST':
    # print(request.POST)
    # Get form values
    username = request.POST['username']
    email = request.POST['email']
    password = request.POST['password']

    # Check if passwords match
        # Check Username 
    if User.objects.filter(username=username).exists():
        return redirect('signup')

    else:
        if User.objects.filter(email=email).exists():
            return redirect('signup')

        else:
            u = User.objects.create_user(username=username, password=password, email=email)
            u.save()
            return redirect('login')
else: 
    return render(request, 'sign-up.html')

def login(request):
# context = {}
# return render(request, 'index.html', context)


if request.method =='POST':
    # print(request.POST)
    email = request.POST['email']
    password = request.POST['password']

    u= auth.authenticate(email=email, password=password)
    return redirect('index')
else: 
    return render(request, 'login.html')

Основная проблема в том, что простой пользователь не может войти в мой сайт, только администратор может войти в систему и django, я не аутентифицирую моего простого пользователя.

...