Как проверить имя пользователя и пароль для пользовательского входа

#python #django

#python #django

Вопрос:

models.py

 class student(models.Model):

  u_email = models.CharField(max_length=50)
  u_username = models.CharField(max_length=50)
  u_password = models.CharField(max_length=20)
  

view.py

 def login_check(request, *args,**kwargs ):
    if request.method == 'POST':
        c_username= request.POST['username']
        c_password = request.POST['password']
        print(username,password)
  

как я могу выполнить следующий запрос для аутентификации учащегося в django

"SELECT id FROM student WHERE u_username = c_username and password = c_password"

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

1. «ВЫБЕРИТЕ идентификатор У студента, ГДЕ u_username = c_username и u_password = c_password»

2. Пожалуйста, не храните пароли в виде обычного текста в своей базе данных!

3. Я буду действовать сильнее. Вы не должны этого делать. Используйте встроенную платформу аутентификации, которая позаботится о правильном хранении ваших паролей.

Ответ №1:

вы можете использовать django ORM и добавить это в свой код:

 students = student.objects.filter(u_username=c_username, u_password=c_password)
if students.exists():
    # do whatever you like with list students .e.g: 
    # access to first one id with students[0].id
  

не забудьте добавить инструкцию import в представление

 from models import student

def login_check(request, *args,**kwargs ):
    if request.method == 'POST':
        c_username= request.POST['username']
        c_password = request.POST['password']
        students = student.objects.filter(u_username=c_username, u_password=c_password)
        if students:
            print(students[0].id)
            # ...
  

ПРИМЕЧАНИЕ: Пожалуйста, не сохраняйте свои пароли в виде обычного текста. используйте хэш-функции и сохраните вместо этого их выходные данные (см. Это). вам никогда не нужно знать пароль пользователя. Вы просто хотите убедиться, что входящий пользователь знает пароль для учетной записи.

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

1. Большое вам спасибо 🙂 за ответ на мой вопрос

2. Вам не нужно .exists() if students: достаточно. ps: не поощряйте хранение паролей в виде обычного текста (и pps: откуда вы знаете, что первый ученик правильный ..?)

3. @thebjorn. спасибо за ваше предложение. Я обновил свой ответ.

4. @KaushalGajjar пожалуйста, примите мой ответ, если он работает