[英]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
您在这里有两个问题:
/
或使其为/?
因此它将是可选的。 /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.