Python 这个正则表达式在django中是什么意思?
我正在从一本书中学习django,我已经进入了高级URL,这里有一个未解释的正则表达式:Python 这个正则表达式在django中是什么意思?,python,regex,django,django-urls,Python,Regex,Django,Django Urls,我正在从一本书中学习django,我已经进入了高级URL,这里有一个未解释的正则表达式: urlpatterns = [ url(r'^(?P<page_slug>\w+)-(?P<page_id>\w+)/', include([ url(r'^history/$', views.history), url(r'^edit/$', views.edit), url(r'^discuss/$', vi
urlpatterns = [
url(r'^(?P<page_slug>\w+)-(?P<page_id>\w+)/',
include([
url(r'^history/$', views.history),
url(r'^edit/$', views.edit),
url(r'^discuss/$', views.discuss),
url(r'^permissions/$', views.permissions),
])),
]
urlpatterns=[
url(r'^(?P\w+)-(?P\w+/),
包括([
url(r“^history/$”,views.history),
url(r“^edit/$”,views.edit),
url(r“^display/$”,views.display),
url(r“^permissions/$”,views.permissions),
])),
]
我知道这是关于消除冗余,但它实际上是如何工作的?
您从哪里获得
page\u slug
和page\u id
以及它们之间的-是什么?此正则表达式与以下URL匹配:
/abc-def/history/ (abc goes to page_slug and def to page_id)
/ghi-jkl/edit/
etc如果您正在使用高级url,我认为您了解基本url标记的工作原理。 每当我们处理变量url模式时,都会使用正则表达式模式,例如,在博客中,url可能读作
domain.com/post-1/
domain.com/post-2/
domain.com/shortpost-1/
domain.com/shortpost-2/
/(?P\w+)-(?P\w+)/'
其中:
:定义我们正在定义一个变量?P
- :text是变量的名称
:您的正则表达式定义了可接受的模式(在本例中,w表示集合中的任何内容\w+
,[0-9a-zA-Z_2;]
表示任意数量的重复。如果您想了解更多信息,我将参考以供实践+
- 而中间的
只是一个强制文本,可以用say-
替换,看起来像-no-
domain.com/page-no-1/
(?p\w+)-(?p\w+)/
开头,后跟后缀的url都由所述视图处理
e、 g.-domain.com/post-1/history/
-由视图处理。history
等等
现在重要的部分是这些变量名如何影响视图。
如果您使用的是基于函数的视图,则历史视图将定义为:
def history(request, page_slug, page_id):
#Your code using the two variables received.
#These might be values stored in db to dynamically fetch values
在基于类的视图中访问url参数时,您使用
self.args
或self.kwargs
,因此您可以通过执行self.kwargs['page_slug'来访问它
在这篇文章中有很多解释。很好的解释,理解了一切,顺便说一句,在这个例子中,我必须向每个函数添加page\u slug和page\u id,对吗?如何从html模板中使用/调用这两个参数(即page\u slug,page\u id)?如下: