Django нет пользователей с одинаковым именем в базе данных
Я новичок в django и все еще нахожусь в процессе обучения. У меня есть код, в котором пользователь вводит любой текст в поле, а после того, как пользователь нажимает кнопку отправки, он берет введенный текст и ищет его в базе данных django для этого элемента. Это может делать то, что я хочу, за исключением случаев, когда нет пользователей с таким именем пользователя. Я не знаю, где я мог бы сделать оператор if или обходной путь для этого.
views.py
from .forms import RequestPasswordResetForm
from django.contrib.auth.models import User
def request_password(request):
next = request.POST.get('next', '/')
if request.method == "POST":
user = request.POST['passUsername']
users = User.objects.get(username=user)
form = RequestPasswordResetForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, 'Request has been sent! Admin will be with you shortly.')
return HttpResponseRedirect(next)
Вы можете обработать это в блоке try catch, где get
метод вызовет исключение (DoesNotExist), если объект не присутствует в БД.
def request_password(request):
next = request.POST.get('next', '/')
try:
if request.method == "POST":
username = request.POST['passUsername']
user = User.objects.get(username=username)
form = RequestPasswordResetForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, 'Request has been sent! Admin will be with you shortly.')
return HttpResponseRedirect(next)
except User.DoesNotExist:
messages.error(request, 'Invalid Username')
Я бы использовал оператор if вместе с функцией 'exists()'. Это выглядело бы примерно так:
username = request.POST['passUsername']
if (User.objects.exists(username = username):
user = User.objects.get(username = username)
else:
# Throw error
Кроме того, будьте осторожны с именованием переменных :)