Есть ли какое-нибудь решение для этого синтаксиса входа>?

У меня есть форма входа и регистрации Django но форма регистрации получает в базе данных auth_user, но не в helloworld_register Вот мой код регистрации

def Register(request):
    if request.method =='POST':
          username=request.POST['username']
          email=request.POST['email']
          first_name=request.POST['first_name']
          last_name=request.POST['last_name']
          password1=request.POST['password1']
          password2=request.POST['password2']
          if User.objects.filter(email=email).exists():
             messages.info(request, 'uh oh..:(   This Email is Already Taken ')
             print('emailtaken')
             return redirect('/Register')
            
          elif User.objects.filter(first_name=first_name).exists():
               messages.info(request, 'uh oh..:(  This Name is Already Taken  ')
               print('Name taken')
               
               return redirect('/Register')
              
             
                 
          user=User.objects.create_user(username=username, email=email,first_name=first_name,last_name=last_name,password=password1)
          user.save();
          messages.info(request, 'Registration complete Login to continue ..:)')
          print('user created')
          
          return redirect('/LOGIN')
    return render(request, 'Register.html')

А это мой код входа

def LOGIN(request):
      if request.method=='POST':
          email=request.POST['email']
          password1=request.POST['password1']
          user=auth.authenticate(email=email,password1=password1)
          
          #user.save();
          if user is not None:
              auth.LOGIN(request,user)
              return redirect('LOGIN')
          else:
                messages.info(request, 'mmm :( Invalid Credentials ')
                return redirect('LOGIN')

Даже если я пытаюсь войти в систему с зарегистрированными учетными данными, я не могу войти

Прежде всего, я хотел бы исправить терминологию. Оба приведенных вами фрагмента - не формы, а Views. И 'auth_user' - это не база данных, а table, как я предполагаю для 'helloworld_register'.

В связи с вашей первой проблемой, похоже, что вы используете стандартную модель Django User. А по умолчанию эта модель использует 'auth_user' как для создания, так и для получения объектов.

Если вы хотите изменить значения по умолчанию, вам понадобится пользовательская модель пользователя, фактически вот цитата из документации Django о такой модели:

Если вы начинаете новый проект, настоятельно рекомендуется установить пользовательскую модель пользователя, даже если модель пользователя по умолчанию является достаточной для вас. Эта модель ведет себя идентично модели пользователя по умолчанию, но вы сможете настроить ее в будущем, если возникнет такая необходимость

.

Что касается второго вопроса, посмотрите на этот пример. Я вижу несколько ошибок в вашем фрагменте, например:

user=auth.authenticate(email=email,password1=password1)
# there is no field password1 in the User model.

if user is not None:
    auth.LOGIN(request,user) # Wrong call do login() method
    return redirect('LOGIN') # You want to redirect to some other place
      

Поэтому вы, вероятно, ищете что-то вроде этого:

(Также не игнорируйте хорошие практики, такие как представления имен в snake_case)

from django.contrib.auth import authenticate, login
from django.shortcuts import redirect

    def my_view(request):
        email= request.POST['email']
        password = request.POST['password1']
        user = authenticate(request, email=email, password=password)
        if user is not None:
            login(request, user)
            redirect('/your/app/index')
            
        else:
            messages.error(request, 'mmm: Invalid Credentials.')
            redirect('/back/to/login')
            

Надеюсь, это поможет.

Вернуться на верх