【问题标题】:Can't seem to get django url route correct with numbers似乎无法使用数字正确获取 django url 路由
【发布时间】:2011-12-23 08:10:48
【问题描述】:

我正在尝试获取这样的 url 结构。

http://example.com/blog/1/title-name-goes-here

我的主 urls 文件有这一行,等等。

url(r'^blog/', include('blog.urls')),

在我的 blog.urls 我有

urlpatterns = patterns('',
    (r'', 'blog.views.index'),
    (r'^(?P<entry_id>\d+)/(?P<slug>[a-zA-Z0-9_.-]+)/$', 'blog.views.entry'),
)

我的问题是当我访问/blog/1/some-title 时,我调用的是索引视图,而不是条目视图方法。路线的顺序也不重要。

我认为正则表达式是错误的。我还是对他们不好。

【问题讨论】:

    标签: python regex django django-urls


    【解决方案1】:

    尝试:

    urlpatterns = patterns('',
        (r'^(?P<entry_id>\d+)/(?P<slug>[-\w]+)/$', 'blog.views.entry'),
        (r'^$', 'blog.views.index'),
    )    
    

    请注意下方图案中的克拉和美元符号,表示空图案。您应该(通常)按照需要匹配多少组的顺序排列模式,例如/id/slug/title/ 上面 /id/slug/ 上面 /id/ 因为 URLconf 选择可能的第一个匹配项。您可以使用RegexPal 在线测试您的模式,这很方便

    我还使用 \w 将 slug 更改为更简单的 slug 模式(单词,数字下划线 - 我不确定您是否特别想匹配 slug 中的点?)

    【讨论】:

    • 这很有效,也很有意义。感谢正则表达式测试器。我会在学习正则表达式时使用它。谢谢。
    猜你喜欢
    • 2014-11-04
    • 2015-04-29
    • 1970-01-01
    • 2011-08-31
    • 2011-09-10
    • 1970-01-01
    • 2014-03-12
    • 2021-03-20
    • 2022-08-04
    相关资源
    最近更新 更多