【问题标题】:Django rejects certain Slug URLs but accepts othersDjango 拒绝某些 Slug URL,但接受其他 URL
【发布时间】:2017-03-21 14:25:26
【问题描述】:

我正在处理一个 Django 项目,我刚刚意识到某些 URL 被服务器拒绝并出现错误:

NoReverseMatch:未找到带有参数“(u'intranet.hieta.biz',)”和关键字参数“{}”的“mapView”的反向。尝试了 1 种模式:[u'QMSv2/(?P[\w-]+)/$']

我不明白的奇怪的事情是一半的页面可以工作并且可以访问,但其他的则不能。它们都共享相同的格式、数据库、视图、url、模板……我看不出有什么区别。这是它试图匹配的 url:

url(r'^(?P[\w-]+)/$', views.mapView, name="mapView")

如果有人知道是什么可能导致 Django 拒绝某些 slug 而不是其他的,那么请告诉我任何帮助都非常感谢!

注意:所有页面都使用相同的模板、url 和视图呈现。 slug 都在同一个数据库中,并且 slug 本身都是从同一个函数生成的。

【问题讨论】:

    标签: python django slug


    【解决方案1】:

    您的组 [\w-]+ 匹配 A-Z、a-z、0-9、下划线和连字符,但不匹配句点 .。您应该将其更改为:

    [\w.-]+
    

    【讨论】:

    • 非常感谢!知道为什么每个 URL 都使用相同的名称但只有一些被正则表达式拒绝吗?
    • 我希望您的旧网址适用于 slug intranet 但不适用于 intranet.hieta.biz,因为它包含一个句点。
    • 我想你误解了我的问题。我在问为什么它会接受一半的蛞蝓(都使用相同的 url,只是不同的 /my-slug/)并拒绝其他的。我理解'。导致拒绝,但为什么它可以接受其他人?
    • 你说得对,恐怕我不明白你的问题。哪些 slug 不包含 . 会被拒绝?
    • 域保持一致,因此它始终是 intranet.hieta.biz/my-slug/ 被拒绝 slug 的示例是:post-flm、文档编号、不合格材料。接受的示例:整体质量管理体系、持续改进、公司政策
    猜你喜欢
    • 1970-01-01
    • 2015-03-17
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2011-03-07
    • 2014-10-03
    • 1970-01-01
    相关资源
    最近更新 更多