我創建了一個唯一的 url,我想檢查實際 url 是否包含 uid,所以我做了一個 if 陳述句,在我的情況下它總是錯誤的,所以我可以更改它是否有效并檢查路徑是否包含 uid。
視圖.py
@login_required(login_url='home:login')
def ChangeEmailView(request, token):
packet = get_object_or_404(TempUrl, user=request.user)
token = packet.uid
if request.path == str(token):
if request.method == 'POST':
objects = User.objects.get(email = request.user.email)
form = EmailChangingForm(request.POST, instance=objects)
if form.is_valid():
form.save()
return redirect('home:profilesettings')
else:
objects = User.objects.get(email = request.user.email)
form = EmailChangingForm(request.POST, instance=objects)
packet = get_object_or_404(TempUrl, user=request.user)
token = packet.uid
else:
print('site wasnt found')
objects = User.objects.get(email = request.user.email)
form = EmailChangingForm(request.POST, instance=objects)
packet = get_object_or_404(TempUrl, user=request.user)
token = packet.uid
return redirect('home:index')
context = {'form': form, 'token': token}
return render(request, 'home/email_settings.html', context)
uj5u.com熱心網友回復:
鑒于系結到的 URLChangeEmailView是由
path('settings/email/changeemail/<str:token>', views.ChangeEmailView , name="changeemail")
thenif request.path == str(token)總是False因為request.path包括完整的 URL 路徑(即/settings/email/changeemail/)而不僅僅是您的令牌。
我想你想要以下
@login_required(login_url='home:login')
def ChangeEmailView(request, token):
packet = get_object_or_404(TempUrl, user=request.user)
site_token = packet.uid
if token == str(site_token):
if request.method == 'POST':
objects = User.objects.get(email = request.user.email)
form = EmailChangingForm(request.POST, instance=objects)
if form.is_valid():
form.save()
return redirect('home:profilesettings')
else:
objects = User.objects.get(email = request.user.email)
form = EmailChangingForm(request.POST, instance=objects)
packet = get_object_or_404(TempUrl, user=request.user)
token = packet.uid
else:
print('site wasnt found')
objects = User.objects.get(email = request.user.email)
form = EmailChangingForm(request.POST, instance=objects)
packet = get_object_or_404(TempUrl, user=request.user)
token = packet.uid
return redirect('home:index')
context = {'form': form, 'token': token}
return render(request, 'home/email_settings.html', context)
Django 將提取 URL 路徑的最后一個條目并將其作為token引數傳遞給您的視圖,您可以使用它來檢查您的 uid 是否存在。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/316362.html
上一篇:CSS影片僅在第一次觸發
