我一直在开发一个新的 Django 站点,但我遇到了 url 调度程序的问题。
基本上我需要帮助才能使以下网址正常工作。
/site/aaa-00
/site/aaa-00-00
我已经查看了 django 文档上的 URL 调度程序,现在我更加困惑了。
url(r'^/site/(?P<name>[-\w]+)/$', 'rollout.views.update'),
我一直在开发一个新的 Django 站点,但我遇到了 url 调度程序的问题。
基本上我需要帮助才能使以下网址正常工作。
/site/aaa-00
/site/aaa-00-00
我已经查看了 django 文档上的 URL 调度程序,现在我更加困惑了。
url(r'^/site/(?P<name>[-\w]+)/$', 'rollout.views.update'),
您的正则表达式不会完成这项工作。我希望它看起来更像:
^site/(?P<path>[-\w]+)/$
做你想做的事。两个主要区别:URL 模式不应该与前导斜杠匹配,即斜杠被剥离(或者,更准确地说,它不是 URL 的路径组件的一部分,但这越来越迂腐了);和?P
in 表达式应该为组取一个名字(它被转换成你的视图函数的参数)。
您可能不知道的另一件事:您/
在 URLconf 行的末尾有一个尾随,但在您尝试匹配的 URL 中没有。请注意,默认情况下,Django(CommonMiddleware
正在运行)将自动重定向以包含尾随/
,除非路径已经与 URLconf 中的某些内容匹配;这可以使用配置APPEND_SLASH
选项来控制。在您的情况下,这应该“正常工作”,尽管它会导致重定向,因此您不应发出没有尾部斜杠的 URL(或在 URLconf 中使斜杠可选)。