gpt4 book ai didi

python - 我如何为这些网址编写正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:50 26 4
gpt4 key购买 nike

我正在尝试构建一个小型 wiki,但在为其编写正则表达式规则时遇到了问题。

我想做的是每个页面都应该有自己的编辑页面,当我在编辑页面上按提交时,它应该将我重定向到 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 定义为:

http://example.com/<pagename>/edit

在我看来,这更清楚也更容易猜测。

然后,请记住 Django 会按照您定义它们的相同顺序循环您的 url 模式,并在第一个匹配传入请求的位置停止。所以它们的定义顺序非常重要。

随附您问题的答案:

^(?P<page_name>[\w]+)$将请求匹配到任何/PageName

请始终记住起始插入符号和最终美元符号,这表示我们希望 URL 在我们的正则表达式之前和之后分别开始和停止,否则任何前导或尾随符号/字符也会使正则表达式匹配(而在这种情况下您可能希望显示 404)。

^_edit/(?P<page_name>[\w]+)$匹配编辑 URL(或 ^(?P<page_name>[\w]+)/edit$ 如果您喜欢用户友好的 URL 通常称为 REST url,而 RESTfullnes 是一个与 URL 样式无关的概念)。


总结将以下内容放入您的网址:

url(r'^(?P<page_name>[\w]+)$', views.page)
url(r'^_edit/(?P<page_name>[\w]+)$', views.edit)

您可以通过更改 \w 轻松强制 URL 不具有某些特定字符使用您自己定义的集合。

了解有关 Django URL 调度的更多信息 read here .

注意:正则表达式既强大又危险,尤其是在网络上。保持简单,并确保真正理解您定义的内容,否则您的 Web 应用程序可能会面临多个安全问题。

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems. -- Jamie Zawinski

关于python - 我如何为这些网址编写正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11724725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com