Django模板中所有保留关键字的列表?

8 投票
2 回答
10057 浏览
提问于 2025-04-17 09:49

我需要一份Django模板引擎使用的所有保留关键字的列表。这些关键字大部分可以在这里找到:

https://docs.djangoproject.com/en/dev/ref/templates/builtins/

有没有什么方法可以程序化地获取这些关键字的列表?或者有没有一份文档包含所有关键字的列表格式?

2 个回答

2

你说的“列表”具体指什么呢?

  1. 你可以直接从你链接的文档页面复制粘贴来获取它;

  2. 你也可以用JavaScript从同一个页面提取,比如:

    document.querySelectorAll('a[href="#built-in-tag-reference"] ~ ul > li > a')

    这个代码可以帮你获取所有的标签元素;你可以从中选择你需要的。

  3. 或者你可以使用Django中的Python代码;

默认的模板标签和过滤器在这里:

/django/templates/defaultfilters.py
/django/templates/defaulttags.py

如果你能更清楚地说明你的目标是什么,可能会得到更相关的回答;无论如何,我觉得从Django的Python代码入手应该能让你更接近想要的结果。

额外的过滤器和标签可以通过{% load TAG %}标签来加载。看看加载的过程很有趣,因为如果你真的想的话,你可以轻松地修改它,把默认的过滤器/标签换成你自己的。

3

Django的过滤器和标签在你提供的链接的文档中有说明,这些文档是自动生成的,可能是用一种叫做sphinx的工具,从Stefano提到的代码defaultfilters.py中生成的。

如果你觉得有帮助,可以查看admindocsadmindocs)这个应用,它会给你更准确的描述,因为它还会包含你自己定义的任何自定义标签和过滤器。

from django.contrib.admindocs.views import load_all_installed_template_libraries
from django import template

app_libs = template.libraries.items()
builtin_libs = [(None, lib) for lib in template.builtins]

for module_name, library in builtin_libs + app_libs:
    for tag_name, tag_func in library.tags.items():
        print 'Tag: ', tag_name
    for filter_name, filter_func in library.filters.items():
        print 'Filter: ', filter_name

你需要从django-admin.py shell或者python manage.py shell来运行这个命令。

撰写回答