我正在尝试构建一个小的wiki,但是在为它们编写regex规则时遇到了问题。你知道吗
我想做的是,每个页面都应该有自己的编辑页面,当我在编辑页面上按submit时,它应该将我重定向到wiki页面。你知道吗
我希望在我的应用程序中有以下URL:
http://example.com/<page_name>
http://example.com/_edit/<page_name>
我的URLConf有以下规则:
url(r'(_edit/?P<page_name>(?:[a-zA-Z0-9_-]+/?)*)', views.edit),
url(r'(?P<page_name>(^(?:_edit?)?:[a-zA-Z0-9_-]+/?)*)', views.page),
但他们不工作的原因。你知道吗
我怎样才能做到这一点?你知道吗
似乎一个或两个匹配相同的东西。你知道吗
请尝试以下更简单的URL:
按照更简洁的方法,我将编辑URL定义为:
在我看来,这是更清楚和猜测。你知道吗
然后,记住Django按照定义的顺序循环url模式,并在第一个匹配传入请求的模式上停止。所以它们的定义顺序非常重要。你知道吗
回答你的问题:
^(?P<page_name>[\w]+)$
将请求与任何/PageName匹配请始终记住起始插入符号和最后的美元符号,这表示我们希望URL在regexp前后分别开始和停止,否则任何前导或尾随符号/字符都会使regexp匹配(在这种情况下,您可能希望显示404)。你知道吗
^_edit/(?P<page_name>[\w]+)$
匹配编辑URL(或者^(?P<page_name>[\w]+)/edit$
如果您喜欢用户友好的URL通常称为REST URL,而RESTfullnes是一个与URL样式无关的概念)。你知道吗在URL中输入以下内容:
通过使用自己定义的集合更改
\w
,您可以轻松地强制url不具有某些特定字符。要了解有关Django URL调度read here的更多信息。你知道吗
注意:Regexp和危险一样强大,尤其是在网络上。保持简单,确保真正理解您定义的是什么,否则您的web应用程序可能会暴露于几个安全问题。你知道吗
相关问题 更多 >
编程相关推荐