我對 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)
uj5u.com熱心網友回復:
我會在函式 'exists()' 旁邊使用 if 陳述句。它看起來像這樣:
username = request.POST['passUsername']
if (User.objects.exists(username = username):
user = User.objects.get(username = username)
else:
# Throw error
另外,請注意您的變數命名:)
uj5u.com熱心網友回復:
您可以在 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')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/327168.html
