Как проверить, существует ли пользователь в модели, которую я сделал в Django?

#django #django-models #django-rest-framework #django-views #django-templates

Вопрос:

Я создаю страницу входа в систему, и данные уже сохранены в созданной мной модели, а не в форме создания пользователя… и вместо поиска пользователя в моей модели(проверка подлинности пользователя) он выполняет поиск в пользователях …

view.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 UserAuthentication: #UserAuthentication is my model where data is stored
           login(request, user)
           return redirect('index')
       else:
           messages.warning(request, "Username OR Password is incorrect!")
           return redirect('login')
   else:
       return render(request, "HTML/login.html", context={})
 

login.html

 <form action="#" method="POST">
                        {%csrf_token %}

                        <input
                            class="text"
                            type="text"
                            name="username"
                            placeholder="Username"
                            required=""
                        />
                        <br />
                        <br />
                        <input
                            class="text"
                            type="password"
                            name="password"
                            placeholder="Password"
                            required=""
                        />
                        <br />
                        <br />

                        {%for message in messages%}
                        <p id="messages">{{message}}</p>
                        <br />
                        {% endfor %}
                        <input type="submit" value="LOGIN" />
                    </form>
 

models.py

 class UserAuthentication(models.Model):
    username  = models.CharField(max_length=100,unique=True,verbose_name="Username",error_messages={'required':'Username already exists'})
    email     = models.EmailField(unique=True, verbose_name=" Email")
    password1 = models.CharField(max_length=50 ,verbose_name="Password")
    password2 = models.CharField(max_length=50 ,verbose_name="Confirmaition Password")


    def __str__(self):
        return self.username

 

Комментарии:

1. Можете ли вы поделиться своими моделями?

Ответ №1:

В settings.py файле необходимо указать, какую пользовательскую модель вы хотите использовать в проекте.

Добавьте эту строку в settings.py :

 AUTH_USER_MODEL = '<app_name>.UserAuthentication'
 

Конечно, измените <app_name> имя приложения, в котором UserAuthentication определена модель.

Кроме того, настроить пользовательскую модель в Django не так просто. Я настоятельно рекомендую вам ознакомиться с официальными документами. Вы можете найти это запутанным, тогда вы сможете искать custom user in Django в Google. Есть много отличных учебных пособий.

Комментарии:

1. Я действительно упоминал об этом в settings.py AUTH_USER_MODEL= 'mylogin.UserAuthentication' но это показывает ошибку, которая AttributeError: type object 'UserAuthentication' has no attribute 'REQUIRED_FIELDS'

2. Привет, я упомянул об этой проблеме в своем ответе. Проблема, о которой вы недавно написали, не имеет отношения к этому вопросу. Действительно, это новый вопрос. Например, вам не нужно наследовать AbstractBaseUser models.Model .