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

Кроме того, будьте осторожны с именованием переменных :)

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