python - django urlconf 的奇怪警告

标签 python django coding-style url-routing

Django 的行为符合我的希望和预期,但给了我一个警告。看来我的用例没有被考虑到。这让我很困惑,所以我的问题是:我是否错过了等待我的任何问题,或者开发人员是否错过了这个用例。

我想要网址person/<slug>/指向详细 View ,URL persons/指向 ListView 。它比以 persons/ 开头更适合人类阅读。也在详细 View 中。我使用 include 来使代码更简洁,例如:

url(r'^person', include([ 
    url(r'^s/$', views.foo),
    url(r'^/(?P<slug>[\w-]+)/form/$', views.form),
    url(r'^/(?P<slug>[\w-]+)/$', views.bar),
])),

现在 Django 告诉我,开头的斜杠是不必要的 - 这是错误的,省略它会让我得到反向的 url person<slug>之间没有斜杠。我不明白为什么这应该是糟糕的风格。警告是:

WARNINGS:
?: (urls.W002) Your URL pattern '^/(?P<slug>[\w-]+)/form/$'
[name='person_form'] has a regex beginning with a '/'. Remove this 
slash as it is unnecessary. If this pattern is targeted in an 
include(), ensure the include() pattern has a trailing '/'.

最佳答案

就您而言,警告是误报,但这是一个相当不寻常的用例,因此我认为 Django 中的启发式不一定需要更改。

您可以通过将 URL 模式更改为以下方式来防止出现警告:

url(r'^persons/$', views.foo),
url(r'^person/', include([ 
    url(r'^(?P<slug>[\w-]+)/form/$', views.form),
    url(r'^(?P<slug>[\w-]+)/$', views.bar),
])),

起初,警告针对的是任何以 / ( ticket 23813 ) 开头的 URL。然后,有人指出,在某些情况下使用斜杠是有效的,因此当 settings.APPEND_SLASH = False ( ticket 27238 ) 时,警告被禁用。

如果您认为应该修改(甚至删除)该检查,那么 django-developers 邮件列表或票务跟踪器将是比 Stack Overflow 更好的讨论此问题的地方。

关于python - django urlconf 的奇怪警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45144201/

相关文章:

python - 如何在 weasyprint 中使用自定义字体

python - 在 Django 中通过 self.request.user 过滤对象列表

python - typeerror '_csv.reader' 对象不可订阅

python - Scrapy 爬虫 - 创建 10,000 个蜘蛛或一个蜘蛛爬行 10,000 个域?

python - 如何读取名称困惑且不可读的文件?

java - 在单行上严格省略花括号是否被认为是正确的?

C++ 命名空间规范是多余的还是有用的?

python - Babun 显示旧版本的 Python

django - Apache mod_wsgi django启用多线程多进程

java - 标记用户提供的内容的编码约定(提高对 XSS 漏洞的认识)