因为“load”对于搜索来说太通用了:
1.“load”的目的是什么?在这个特定的例子中,它有什么作用?- 在模板文件base_weblog.html中,{% load weblog %}{% render_month_links %}
1.是否使用了一些命名约定以使“load”完成其工作?例如,文件夹和/或文件的名称和/或类名?
1.“加载”的文档在哪里,您能详细说明吗?
详细信息:
该示例来自http://www.djangoproject.com/的源代码-直接下载URL是通过http://shrinkster.com/17g8。
部分文件夹结构(没有文件扩展名的项目是文件夹):
django_website
apps
accounts
aggregator
blog
urls.py
models.py
class Entry(models.Model)
templatetags
weblog.py
contact
docs
templates
base_weblog.html
aggregator
blog
entry_archive.html
entry_archive_year.html
month_links_snippet.html
entry_archive_month.html
entry_detail.html
entry_snippet.html
entry_archive_day.html
comments
contact
docs
feeds
flatfiles
flatpages
registration
3条答案
按热度按时间xzabzqsa1#
load
:加载自定义模板标记集。
有关详细信息,请参见自定义标记和过滤器库。
k2arahey2#
“load”后面的“weblog”(在模板文件
django_website/templates/base_weblog.html
中)引用文件夹django_website/apps/blog/templatetags
中的文件weblog.py
。文件夹templatetags
的名称必须完全相同,并且必须包含名为__init__.py
的文件(问题2)。“load”使自定义模板标记(本例中为
render_latest_blog_entries
和render_month_links
)可用于模板,本例中为django_website\templates\base_weblog.html
。“加载”是一个安全和性能功能。k97glaaz3#
load标签可以通过设置
load
标签中的文件来加载自定义模板标签。例如,在
core
文件夹中创建templatetags
文件夹,其中settings.py
(空文件)和custom_tags.py
如下所示,然后不要忘记重新启动服务器以将custom_tags.py
应用于Django项目。* 其他名称可以用于custom_tags.py
,根据我的实验,custom_tags.py
可以在没有__init__.py
(空文件)的情况下工作,但基本上,最好按照文档所说的在templatetags
文件夹下创建__init__.py
(空文件):并且,不要忘记在
settings.py
中将core
设置为INSTALLED_APPS
,以将custom_tags.py
应用于Django项目,如下所示。* 将core
设置为INSTALLED_APPS
也可以使用python manage.py collectstatic
将core
文件夹中的静态文件收集到Django Project根文件夹中。我建议在开始构建Django项目之前将core
设置为INSTALLED_APPS
:然后,在
custom_tags.py
中创建uppercase
和lowercase
标记,如下所示。* 你可以看到我解释@register.simple_tag
的答案:然后,您需要设置文件
custom_tags
,方法是在load标签中省略.py
,以使用uppercase
和lowercase
标签,如下所示:而且,您还可以创建像
app1
和app2
这样的文件夹,其中__init__.py
(空文件)和custom_tags.py
在templatetags
文件夹中,如下所示。* 其他名称对于app1
和app2
文件夹是可以的,根据我的实验,app1
和app2
文件夹中的custom_tags.py
没有__init__.py
(空文件)就不能工作,所以__init__.py
(空文件)必须在app1
和app2
文件夹下创建:然后,您需要在
load
标签中设置文件夹app1
和app2
之后的文件custom_tags
,以使用app1/custom_tags.py
和app2/custom_tags.py
中定义的标签,如下所示:并且,如果在多个文件中有相同的标签,如
uppercase
,如下所示:然后,使用在
load
标记中设置的最后一个文件的uppercase
标记最后,您可以通过多个应用程序文件夹
app1
和app2
以及core
文件夹创建多个templatetags
文件夹,如下所示:但是,我建议在
core
文件夹中只创建一个templatetags
文件夹,因为有以下3个原因:1.在
core
文件夹中只管理一个templatetags
文件夹比通过多个应用程序文件夹管理多个templatetags
文件夹更容易。1.对于Django Admin,没有文件夹可以创建
templatetags
文件夹,所以core
文件夹是Django Admin最合理的地方。并且,第三个原因是因为通过多个
templatetags
文件夹,如果有多个相同名称的文件,如custom_tags.py
,如下所示:然后,Django模板中只加载了一个文件,但根据我的实验,我不知道要加载哪个文件,如下所示: