#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 пожалуйста, примите мой ответ, если он работает