在Django中,我如何理解include()函数?

时间:2017-05-19 08:20:58

标签: python django

我已经开始学习Django了,我不确定 include()功能是什么意思。

这是 mysite / urls.py 。 - 项目

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', admin.site.urls),
]

这是 polls / urls.py 。 - 项目中的应用

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

从django文档中, include()函数描述如下。

  

每当Django遇到include()时,它会删除 匹配到该点的 的任何部分,并发送 剩余字符串 到包含的URLconf中进行进一步处理。

我不确定那一点是什么,剩余字符串

如果是上面的示例,提醒字符串是什么, url 字符串被切断了什么?

4 个答案:

答案 0 :(得分:6)

例如,来自此网址

polls/5/results

网址规则

url(r'^polls/', include('polls.urls')),

删除网址的polls/部分,然后在polls/之后发送剩余的字符串,无论它是什么,例如(请参阅here更多):

5/results/

来自投票应用的u​​rls.py中的网址将根据此文件中定义的网址规则映射到视图

答案 1 :(得分:2)

每当遇到/polls的任何网址时,它都会包含所有民意调查网址。

示例:

如果您输入/polls/hey

然后,只要它看到/polls,它就会转到民意调查网址文件,之后会搜索:

hey/在那里匹配。

答案 2 :(得分:1)

让我们说你的民意调查/ urls.py中还有一个条目 url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive), 这里是查询字符串参数。所以你的网址看起来像

/ polls / articles / 2007 所以在这种情况下, / polls / articles / 将匹配,2007将传递给year_archive方法

答案 3 :(得分:1)

在您的示例中,没有切碎的字符串,网址只返回polls/,但是如果您有另一个网址,例如'^new$',则该网址被切断,与{{1}合并它返回polls/,希望这是有道理的。