簡體   English   中英

錯誤:MyUser匹配查詢不存在-Django

[英]Error: MyUser matching query does not exist - Django

我試圖將用戶名包含在url中,但是如果沒有出現此錯誤,我將無法注銷:

在此處輸入圖片說明

它可以追溯到views.py中的這一行:

u = MyUser.objects.get(username=username)

知道我在做什么錯嗎?

這是我的views.py:

@login_required
def account_home(request, username):
u = MyUser.objects.get(username=username)
return render(request, "accounts/account_home.html", {})

def auth_logout(request):
logout(request)
return HttpResponseRedirect('/')

urls.py

urlpatterns += patterns('accounts.views',
# url(r'^account/$', 'account_home', name='account_home'),
url(r'^(?P<username>[\w.@+-]+)/$', 'account_home', name='account_home'),
url(r'^logout/$', 'auth_logout', name='logout'),
url(r'^login/$', 'auth_login', name='login'),
url(r'^register/$', 'auth_register', name='register'),
)

多謝你們!

Django使用與您的查詢匹配的第一個視圖。 因為您的account_home視圖是列表中的第一個視圖,並且它與/logout//login//register/匹配,所以所有這些url都指向account_home視圖。 由於您沒有使用這些名稱的用戶,因此會收到該錯誤。

要解決此問題,您至少需要做的就是將account_home視圖移動到列表的末尾。 您可能還希望添加一些可以正確處理不存在的用戶的代碼,例如get_object_or_404

問題出在您的url匹配正則表達式。 Django使用第一個匹配模式, /logout/匹配r'^(?P<username>[\\w.@+-]+)/$' -它正在尋找一個名為logout的用戶。

您可以重新排序url模式以將用戶名模式放在末尾,或者(一種更好的解決方案)在模式中添加明確的內容,例如r'^/account/(?P<username>[\\w.@+-]+)/$'

暫無
暫無

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

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