簡體   English   中英

Django沒有數據庫中具有相同用戶名的用戶

[英]Django no User with same username in database

我對 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')

我會在函數 'exists()' 旁邊使用 if 語句。 它看起來像這樣:

username = request.POST['passUsername']

if (User.objects.exists(username = username):
    user = User.objects.get(username = username)
else:
    # Throw error

另外,請注意您的變量命名:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM