“加载”是什么意思? 在 Django 模板中做什么?
由于“load”对于搜索来说太通用了:
-
“load”的目的是什么?在这种特殊情况下它有什么作用? - 在模板文件中,base_weblog.html,
{% 加载博客 %}{% render_month_links %}
-
是否使用了一些命名约定,以便“加载” 做好它的工作吗? 例如文件夹和/或文件的名称和/或 类名?
-
“加载”的文档在哪里?您能详细说明吗?
详细信息:
该示例来自以下来源 http://www.djangoproject.com/ - 直接下载网址是 通过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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
load
:加载自定义模板标签集。
请参阅自定义标签和过滤器库 了解更多信息。
load
:Load a custom template tag set.
See Custom tag and filter libraries for more information.
“load”之后的“weblog”(在模板文件
django_website/templates/base_weblog.html
中)引用文件夹django_website/apps/blog/ 中的文件
。 文件夹weblog.py
模板标签templatetags
必须准确命名,并且必须包含名为__init__.py
的文件(问题 2)。“load”使自定义模板标签(在本例中为
render_latest_blog_entries
和render_month_links
)可在模板django_website\templates\base_weblog.html
中使用在这种情况下。 “负载”是一个安全和性能功能。"weblog" after "load" (in template file
django_website/templates/base_weblog.html
) refers to fileweblog.py
in folderdjango_website/apps/blog/templatetags
. Foldertemplatetags
must be named exactly that and must contain a file named__init__.py
(question 2)."load" makes the custom template tags (
render_latest_blog_entries
andrender_month_links
in this case) available for use in templates,django_website\templates\base_weblog.html
in this case. "Load" is a security and performance function.加载标签可以加载内置 和 通过设置
load
标签中的文件来自定义 Django 模板标签和过滤器。例如自定义 Django 模板标签和过滤器,在
core
文件夹中创建templatetags
文件夹,其中包含__init__.py
(空文件)和custom_tags.py
,其中settings.py
如下所示,然后不要忘记重新启动服务器以将custom_tags.py
应用到Django项目。 *其他名称对于custom_tags.py
来说也可以,根据我的实验,custom_tags.py
可以在没有__init__.py
(空文件)的情况下工作,但基本上,最好按照 文档 说:并且,不要忘记将
core
设置为settings.py
中的 >INSTALLED_APPS 将custom_tags.py
应用到 Django 项目,如下所示。 *将core
设置为INSTALLED_APPS
也可以使用python manage.pycollectstatic将
。 我建议在开始构建 Django 项目之前将core
文件夹中的静态文件收集到Django项目根文件夹中core
设置为INSTALLED_APPS
:然后,创建
uppercase
和lowercase
标签在custom_tags.py
中,如下所示。 *您可以看到我的答案解释@register.simple_tag
:然后,您需要通过在加载中省略
.py
来设置文件custom_tags
标签使用uppercase
和lowercase
标签,如下所示:并且,您还可以创建
app1
和app2
等文件夹>templatetags
文件夹中包含__init__.py
(空文件)和custom_tags.py
,如下所示。 *其他名称适用于app1
和app2
文件夹,根据我的实验,custom_tags.py
位于app1
和如果没有__init__.py
(空文件),app2
文件夹将无法工作,因此必须在__init__.py
(空文件)下创建>app1 和app2
文件夹:然后,您需要设置文件夹
app1
和app2< 后面的文件
custom_tags
/code> 在load
标签中使用app1/custom_tags.py
和app2/custom_tags.py
中定义的标签,如下所示:如果多个文件中存在相同的
uppercase
标签,如下所示:那么,
load
标签中设置的最后一个文件的uppercase
标签为 所示最后,除了
core
文件夹之外,您还可以通过多个应用程序文件夹app1
和app2
创建多个templatetags
文件夹,如下 如下图所示:不过,我建议在
core
文件夹中只创建一个templatetags
文件夹,因为有以下 3 个原因:只管理一个
templatetags
文件夹更容易管理core
文件夹中的 code>templatetags 文件夹比通过多个应用文件夹管理多个templatetags
文件夹要好。对于 Django Admin,没有用于创建
templatetags
文件夹的文件夹,因此core
文件夹是 Django Admin 执行此操作的最合理位置。第三个原因是因为通过多个
templatetags
文件夹,如果有多个同名文件,如custom_tags.py
如下所示:那么,Django 中只会加载一个文件模板,但根据我的实验,我不知道要加载哪个文件,如下所示:
load tag can load built-in and custom Django template tags and filters by setting the files in
load
tag.For example of a custom Django template tag and filter, create
templatetags
folder with__init__.py
(Empty file) andcustom_tags.py
incore
folder wheresettings.py
is as shown below, then don't forget to restart server to applycustom_tags.py
to Django project. *Other names are fine forcustom_tags.py
and according to my experiments,custom_tags.py
works without__init__.py
(Empty file) but basically, it is better to create__init__.py
(Empty file) just undertemplatetags
folder by following what the doc says:And, don't forget to set
core
toINSTALLED_APPS
insettings.py
to applycustom_tags.py
to Django project as shown below. *Settingcore
toINSTALLED_APPS
also can collect the static files incore
folder to the root Django Project folder withpython manage.py collectstatic
. I recommend to setcore
toINSTALLED_APPS
before you start building your Django Project:Then, create
uppercase
andlowercase
tags incustom_tags.py
as shown below. *You can see my answer explaining@register.simple_tag
:Then, you need to set the file
custom_tags
by omitting.py
in load tag to useuppercase
andlowercase
tags as shown below:And, you can also create the folders like
app1
andapp2
with__init__.py
(Empty file) andcustom_tags.py
intemplatetags
folder as shown below. *Other names are fine forapp1
andapp2
folders and according to my experiments,custom_tags.py
inapp1
andapp2
folders doesn't work without__init__.py
(Empty file) so__init__.py
(Empty file) must be created just underapp1
andapp2
folders:Then, you need to set the file
custom_tags
following the foldersapp1
andapp2
inload
tag to use the tags defined inapp1/custom_tags.py
andapp2/custom_tags.py
as shown below:And, if there are the same tags like
uppercase
through multiple files as shown below:Then, the
uppercase
tag of the last file set inload
tag is usedLastly, you can create multiple
templatetags
folders through multiple app foldersapp1
andapp2
in addition tocore
folder as shown below:However, I recommend to create only one
templatetags
folder incore
folder because there are 3 reasons as shown below:It is easier to manage only one
templatetags
folder incore
folder than managing multipletemplatetags
folders through multiple app folders.For Django Admin, there is no folder to create
templatetags
folder socore
folder is the most reasonable place to do it for Django Admin.And, the 3rd reason is because through multiple
templatetags
folders, if there are multiple same name files likecustom_tags.py
as shown below:Then, only one file is loaded in Django Templates but I don't know which file to be loaded according to my experiments as shown below: