我已经开始学习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 字符串被切断了什么?
答案 0 :(得分:6)
例如,来自此网址
polls/5/results
网址规则
url(r'^polls/', include('polls.urls')),
删除网址的polls/
部分,然后在polls/
之后发送剩余的字符串,无论它是什么,例如(请参阅here更多):
5/results/
来自投票应用的urls.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/
,希望这是有道理的。