簡體   English   中英

您如何在Django中通過傳遞參數的網址?

[英]How do you make a url that passes a parameter work in Django?

我正在研究注冊邏輯,但似乎無法使參數傳入以使其正常工作。 我得到的錯誤是找不到404頁面。 以前,我還收到“視圖未返回HttpResponse對象”錯誤。我們將提供任何幫助。

這是我來自urls.py的網址:

url(r'^accounts/confirm/(?P<activation_key>\d+)/$', 'mysite.views.confirm', name='confirm'),

這是我的views.py:

def confirm(request, activation_key):
    if request.user.is_authenticated():
        HttpResponseRedirect('/home')

    user = Hash.objects.filter(hash_key = activation_key)
    if user:
        user = Hash.objects.get(hash_key = activation_key) 
        user_obj = User.objects.get(username= user.username)
        user_obj.is_active = True
        user_obj.save()

    HttpResponseRedirect('/home')

我發送帶有以下字符串的網址:

"Click the link to activate your account http://www.example.com/accounts/confirm/%s" % (obj.username, activation_key)"

因此,鏈接如下所示: http : //www.example.com/accounts/confirm/4beo8d98fef1cd336a0f239jf4dc7fbe7bad8849a127d847f

您在這里有兩個問題:

  1. 從樣式中刪除尾隨的/或使其為/? 因此它將是可選的。
  2. /d+僅匹配數字,並且您的鏈接還包含其他字符。 嘗試使用[a-z0-9]+

完整模式:

^accounts/confirm/(?P<activation_key>[a-z0-9]+)$

從網址末尾刪除/

url(r'^accounts/confirm/(?P<activation_key>\d+)$', 'mysite.views.confirm', name='confirm'),

或在鏈接末尾添加/

http://www.example.com/accounts/confirm/4beo8d98fef1cd336a0f239jf4dc7fbe7bad8849a127d847f/

暫無
暫無

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

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