urls.py没有传递url模式

时间:2012-01-10 04:13:57

标签: django

我刚刚创建了一个url模式条目来将内容路由到我的注册视图,但该参数根本没有被传递,即使它明显在URL中。

我的网址格式:

url(r'^register/(?P<profile_type>\w+/?$)', 'userProfile.views.register'),

我的观点定义:

def register(request, profile_type=None):

我尝试加载的网址(不是真实的网址,而是示例):

http://example.com/register/user

当我在视图的开头设置pdb断点时,profile_type为None,但是url为http://example.com/register/user

我尝试运行re.match以查看正则表达式是否错误,我得到以下内容:

match = re.match(r'^register/(?P<profile_type>\w+/?$)', 'register/user')
match
<_sre.SRE_Match object at 0x1004d48a0>
match.groupdict()
{'profile_type': 'user'}

显然,正则表达式匹配用户&#39; URL的一部分,但它没有通过。我会喜欢这方面的帮助。

urls.py包含其他类似的模式,这些模式正常运行:

url(r'^user/(?P<profile_id>\d+/?$)', 'userProfile.views.registeredUser'),

视图位于正确的位置并且正在被正确调用,但参数未被传递。

实际上,我在文件中有一个先前的模式,如下所示:

url(r'^register', 'userProfile.views.register'),

我认为在第二种模式之前被调用并弄乱了......

2 个答案:

答案 0 :(得分:0)

尝试在设置中将APPEND_SLASH设置为False。有关详细信息,请参阅that

答案 1 :(得分:0)

正如我刚刚添加到问题部分中的那样,我的文件中有一个先前的模式,它搞砸了:

url(r'^register', 'userProfile.views.register'),

我把它改为:

url(r'^register+/?$', 'userProfile.views.register'),

现在一切正常。 /捂脸