Список всех зарезервированных ключевых слов в шаблонах Django? - PullRequest
5 голосов
/ 09 января 2012

Мне нужен список всех зарезервированных ключевых слов, используемых движком шаблонов django.Большинство из этих ключевых слов можно найти здесь:

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

Существует ли программный способ получения только списка ключевых слов?Или документ, который содержит все из них в виде списка?

Ответы [ 2 ]

3 голосов
/ 09 января 2012

Фильтры и теги django определены в документации по предоставленной вами ссылке - и эта документация создается (с использованием sphinx, я думаю) автоматически из кода defaultfilters.py кода, который предлагает Стефано.

Если этосправки, тогда просмотр приложения 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 shell или python manage.py shell

2 голосов
/ 09 января 2012

Что именно вы подразумеваете под "списком"?

  1. Вы можете извлечь его, вставив копию со страницы документа, на которую вы ссылаетесь;

  2. Вы можете извлечь его с помощью JS с той же страницы, например:

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

    даст вам все элементы тега;вы можете выбрать его оттуда.

  3. Или вы можете использовать код Python из django;

теги и фильтры шаблона по умолчанию находятся под:

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

Если бы вы могли лучше объяснить, какова ваша цель, вы могли бы получить более актуальные ответы;в любом случае, я думаю, начиная с кода Python django, вы приблизитесь к желаемому результату.

Дополнительные фильтры и теги загружаются с тегом {% load TAG%}.Интересно посмотреть, как работает загрузка, потому что вы можете легко ее взломать и заменить стандартные фильтры / теги своими собственными, если вы действительно хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...