【问题标题】:List of all reserved keywords in django templates?django模板中所有保留关键字的列表?
【发布时间】:2012-01-08 23:40:06
【问题描述】:

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

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

是否有一种程序化方式来获取关键字列表?还是以列表格式包含所有这些的文档?

【问题讨论】:

  • 那些不是“保留关键字”,它们只是 Django 本身提供的标签和过滤器。
  • 我创建了一个来自 dandonovan(稍作修改)程序的输出的 pastebin:pastebin.com/82CyecW2

标签: python django keyword


【解决方案1】:

django 过滤器和标签在您提供的链接的文档中定义 - 并且该文档是根据 Stefano 建议的代码 defaultfilters.py 自动创建的(我认为使用 sphinx)。

如果有帮助,那么查看admindocs (admindocs) 应用程序将为您提供更准确的描述,因为它还包含您定义的任何自定义标签和过滤器。

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 shellpython manage.py shell 运行它

【讨论】:

    【解决方案2】:

    “列表”到底是什么意思?

    1. 您可以通过从您链接的文档页面复制粘贴来提取它;

    2. 你可以从同一个页面用JS提取它,例如:

      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 %} 标签加载其他过滤器和标签。看看加载是如何工作的很有趣,因为如果你真的想要的话,你实际上可以很容易地破解它并用你自己的过滤器/标签替换默认过滤器/标签。

    【讨论】:

    • 我的目标是获取关键字,因为我正在为 SHPAML 和 django 编写 colorer eclipse 插件的语法着色器/荧光笔。我需要 django 的保留关键字列表,以便我可以突出显示 django 模板标签 {% %} 中的那些保留字。
    • @EricGustavson 在这种情况下,这些方法中的任何一个都应该可以工作并且同样快速......您只需要过滤器和标签的静态列表 - 或者使用基本上从我的建议开始的 danodonovan 代码# 3!
    猜你喜欢
    • 2021-09-14
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 2018-07-31
    相关资源
    最近更新 更多