【问题标题】:urls.py not passing url patternurls.py 没有传递 url 模式
【发布时间】:2012-01-10 04:13:57
【问题描述】:

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

我的网址格式:

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

我的视图定义:

def register(request, profile_type=None):

我尝试加载的 URL(不是真实的,而是一个示例):

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'}

很明显,正则表达式与 URL 的“用户”部分匹配,但没有通过。我很想得到一些帮助。

urls.py 包含其他类似的模式,并且这些模式工作正常:

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

视图在正确的位置并且被正确调用但参数没有被传递。

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

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

我认为这是在第二种模式之前被调用并搞砸了......

【问题讨论】:

  • 请发布您的准确网址格式。右括号在哪里?美元在哪里?如果您按照编辑屏幕上清楚显示的格式说明进行操作,“Markdown”不会删除空格 - 用反引号将代码括起来以进行内联格式,或者将行缩进四个空格以用于 sn-ps。跨度>
  • 这个条目是在app的urls.py还是项目的urls.py中?
  • 这个条目在项目的urls.py中。确切的 URL 模式是:url(r'^register/(?P&lt;profile_type&gt;\w+/?$)', 'userProfile.views.register'),@DanielRoseman,Markdown not 删除了空格。它确实删除了模式的 部分,这就是我添加空格的原因。

标签: django


【解决方案1】:

尝试在设置中将 APPEND_SLASH 设置为 False。更多详情请见that

【讨论】:

  • 检查 userProfile 是否在 INSTALLED_APPS 中。检查 userProfile 是否包含 models.py(可能为空)。
  • 从您的正则表达式中删除空格,例如 url(r'^register/(?P\w+/?$)', 'userProfile.views.register'),)。我刚刚试过你的例子。一切正常,请用文件夹结构和您的 settings.py 更新您的问题。
  • 我的正则表达式实际上并没有空格——我不得不在 '' 之间添加空格,因为 Markdown 没有正确显示它。它在我的 re.match() 调用中删除了模式的 部分。
  • 没有错误信息。我收到了关于上下文处理器的弃用警告,但这似乎无关紧要。 django.core.context_processors.auth 的上下文处理器已弃用;请改用路径django.contrib.auth.context_processors.auth
【解决方案2】:

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

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

我改成:

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

现在一切正常。 /掌脸

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 2010-11-24
    • 2010-10-03
    • 1970-01-01
    • 2020-06-13
    • 2012-04-10
    • 2011-09-24
    • 2018-07-07
    • 1970-01-01
    相关资源
    最近更新 更多