Django 名称分组 Urls.py

0 投票
1 回答
2033 浏览
提问于 2025-04-18 00:29

我正在尝试为用户账户的邮箱激活系统创建一个网址映射。在用户注册后,会发送一封邮件,里面有一个链接让他们点击。这个链接的格式是域名/login/activate/确认码/用户名。我想弄明白如何在Django的网址调度器中使用命名组,这样我就可以把确认码和用户名作为参数传递给我的视图函数。但是我似乎搞不定。感谢任何帮助!

我参考了这个链接:https://docs.djangoproject.com/en/dev/topics/http/urls/

我的urls.py文件:

from django.conf.urls import patterns, url
from login import views

urlpatterns = patterns('',
     url(r'^register/$', views.registration, name='index.html'),
     url(r'^authenticate/$', views.authenticateLogin, name='index.html'),
     url(r'^authenticateUser/$', views.authenticateUser, name='index.html'),
     url(r'^activate/(?P<confirmation_code>\d{4}/?P<username>\d{4})/$', views.activate)
)

错误信息:

Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
^admin/
^blogadmin/
^ ^$ [name='index']
^ ^about/$ [name='about']
^ ^contact/$ [name='contact']
^ ^$ [name='index']
^login/ ^register/$ [name='index.html']
^login/ ^authenticate/$ [name='index.html']
^login/ ^authenticateUser/$ [name='index.html']
^login/ ^activate/(?P<confirmation_code>\d{4})/(?P<username>\d{4})/$ [name='activate']
^blog/
^webstore/
^companion/
The current URL, login/activate/o5y0WONgVpyXELEIuNg9xp3lCVod35JDB/pdf2e, didn't match any   of these.

感谢karthikr和Jingo的回答

解决方案:

url(r'^activate/(?P<confirmation_code>[\w]+)/(?P<username>[\w]+/)$', views.activate, {}, 'activate')

1 个回答

1

你把命名组的括号设置错了,试试这样:

url(r'^activate/(?P<confirmation_code>[\w]{1,33})/(?P<username>\[\w]+)/$', 'views.activate', {}, 'activate')

希望这对你有帮助 :)

更新:如果你的令牌长度不超过33个字符(字母和数字混合),可以试试上面的方式。

撰写回答