【问题标题】:Django urls regex for query string用于查询字符串的 Django urls 正则表达式
【发布时间】:2011-05-15 20:47:30
【问题描述】:

以下来自 urls.py:

url(r'^\?view=(?P<vtype>instructor|course|room)$', 'index', name='index'),

我可以通过在 shell 中调用 django.core.urlresolvers.reverse 来验证它是否有效:

In [6]: reverse('index', args=["course"])
Out[6]: '/?view=course'

但是当我尝试访问http://localhost:8000/?view=course 我得到 404。

我在这里做错了什么?

谢谢

编辑:

url('^search/\?user=(?P<userid>\d+)&type=topic', 'search_forum', name='my_topics'),

这是来自一个按预期工作的以前的项目。叹息……

【问题讨论】:

  • 你有什么可以回答那个 URL 的吗?
  • 是的,index() 通常在没有正则表达式的情况下工作。但添加查询字符串正则表达式会破坏 url 调度。

标签: regex django url query-string


【解决方案1】:

查询字符串不是 URL 的一部分。如果你想这样做,你必须使用url(r'^$', 'index', name='index'),然后在视图中的request.GET字典中查找。

然而,通常的方法是使用url(r'(?P&lt;vtype&gt;instructor|course|room)/$', 'index', name='index')。查询字符串方法是无法根据非查询字符串 URL 部分直接请求的常用解决方法。 Django 没有这个限制。

【讨论】:

    【解决方案2】:

    您的正则表达式从头开始匹配 (^),但我没有看到任何与前导“/”匹配的内容。会是这样吗?

    【讨论】:

    • 不幸的是not.django url dispatcher解析了根/之后的部分。但我试过了,但没有运气:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2017-02-17
    • 1970-01-01
    相关资源
    最近更新 更多