我认为它正在进行无限检查,因为Django从未到达build_history
视图功能。
# CodeBundles
url(r"^cb/create/$", 'codebundle_create', name="codebundle_create"),
url(r"^cb/details/(?P<cbid>\w+)/$", 'script', name="codebundle_details"),
url(r"^cb/(?P<cbid>\w+)$", 'codebundle_browser', name="codebundle_browser"),
url(r"^cb/(?P<cbid>\w+)/(?P<path>\w+)$", 'codebundle_browser', name="codebundle_browser"),
#### url(r"^cb/(?P<cbid>\w+)/(?P<path>(.|\W|\w)+)/delete/$", "deletefile", name="deletefile"),
url(r"^cb/newfile/$", 'codebundle_newfile', name="codebundle_newfile"),
url(r"^cb/newfolder/$", 'codebundle_newfolder', name="codebundle_newfolder"),
url(r"^cb/build_history/(?P<cbid>\w+)/$", 'codebundle_build_history', name="codebundle_build_history"),
url(r"^cb/run_history/(?P<cbid>\w+)/$", 'codebundle_run_history', name="codebundle_run_history"),
请注意,那个被评论出来的是凶手。
当我启用该url模式时,我得到502 Bad Gateway
,我不明白为什么。
Django主网址:http://192.168.1.138/natrium/
我转到codebundle_browser
,网址都可以正常使用
http://192.168.1.138/natrium/cb/12343
http://192.168.1.138/natrium/cb/12343/./ABC
进入codebundle_browser
页面后,我可以点击build_history
,然后我会以502 Bad Gateway
结束。
所以deletefile
url模式导致无限制检查?但是build_history
是一个不同的网址格式,如果请求网址是
build_history
http://192.168.1.138/natrium/cb/build_history/12343/
感谢。
答案 0 :(得分:1)
问题是你没有正确使用正则表达式。
在这里,您可以找到有关python中的regexp的文档:http://docs.python.org/library/re.html
这样的规则:
url(r"^cb/(?P<cbid>\w+)$", 'codebundle_browser', name="codebundle_browser"),
url(r"^cb/newfile/$", 'codebundle_newfile', name="codebundle_newfile"),
基本上重叠,因为\w+
可能意味着newfile
。 (由于额外的/
,它可能不会重叠,但是django使用约定将/
附加到url的末尾)
对于ids(数字),您应该使用仅匹配数字(任何数字一次或多次)的(?P<cbid>\d+)
。
对于任何您可以使用.+
(任何符号一次或多次)的任何内容
我还建议您遵循RESTful URI设计目标http://redrata.com/restful-uri-design/