如何理解 django url.py 中的 Url 模式

Posted

技术标签:

【中文标题】如何理解 django url.py 中的 Url 模式【英文标题】:How to understand the Url patterns in django url.py 【发布时间】:2012-04-29 11:40:52 【问题描述】:

如何理解 URL 模式,例如。 (?P<slug>[-\w]+)/$ 在 django url.py 中

【问题讨论】:

我很想推荐manual。 这是一个正则表达式。阅读docs.python.org/library/re.html以了解更多信息。 【参考方案1】:

这个网址:(?P<slug>[-\w]+)/$

表示您正在向视图传递一个名为 slug 的变量,可以是任何数字或字母,-

你的看法是这样的:

def my_view(request, slug):
   ....

希望对你有帮助……

【讨论】:

这并不能解释那些“数字或字母”的来源。【参考方案2】:

请注意,slug 字段也可能包含数字(不仅仅是字母和破折号),因此您希望将其更改为:

 SLUG = '(?P<slug>[\w\d-]+)'

希望对你有帮助...

【讨论】:

这不能回答问题。他问的是如何解释它们,而不是如何改变它们来做某事。【参考方案3】:

我认为这不是一个有效的正则表达式模式。 "[-\w]+" 将得到 "word and -",类似于 "a-b9-c-" 或 "---" (?P...) 是一个“命名组”。如果你不给出它的名字,python(我的是 2.7)会报错。

>>> m = re.match("(?P<e>[-\w]+)/$", "a-b-c-/")
>>> m.group('e')
'a-b-c-'
>>> m = re.match("(?P[-\w]+)/$", "a-b-c-/")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/re.py", line 137, in match
    return _compile(pattern, flags).match(string)
  File "/usr/lib/python2.7/re.py", line 244, in _compile
    raise error, v # invalid expression
sre_constants.error: unknown specifier: ?P[

【讨论】:

但是它有指定的组。它有效的。 (我假设您正在查看我在您发布此之前三分之三小时修复的非转义版本。)【参考方案4】:

首先是Mastering Regular Expressions,然后是7.2.1 - Regular Expression Syntax

【讨论】:

不要只发布链接作为答案。添加详细信息/示例或将其作为评论发布。 我完全同意 agf,尽管 Gopi 的问题并不明智。正则表达式是一个巨大的领域,仅仅一个链接是无济于事的。

以上是关于如何理解 django url.py 中的 Url 模式的主要内容,如果未能解决你的问题,请参考以下文章

Django之视图(views.py)

请问如何在我的 url.py django 3 中使用 slug 创建 url?

django url.py使用

Django 在我的主 url.py 中包含应用程序 url

6)django-实例(fbv)

在 Django 中,我如何编写一个 url.py,其中 users/self/ 与 users/<pk>/ 相同,其中 <pk> 是您登录的用户 pk?