【问题标题】:Use custom directory for "templatetags"为“模板标签”使用自定义目录
【发布时间】:2014-07-07 02:00:30
【问题描述】:

有人知道它是否可能将自定义目录用于“templatetags”eje:“my-project/templatetags”

Normal
My-Project-Name
  My-App
    __init__.py
      templatetags
        __init__.py

需要这样的

My-Project-Name
  templatetags
    __init__.py

【问题讨论】:

    标签: django django-1.7


    【解决方案1】:

    这是可能的。只需将 templatetags.py 或 templatetags 目录的位置添加到 Django settings.py 到 TEMPLATES 设置中的 OPTIONS 中。

    在我的例子中,我将我的模板标签放在位于项目根目录中的 libs/ 目录中。
    你有两个选择,builtinslibraries

    TEMPLATES = [{
        ...
        'OPTIONS': {
            ...
            'builtins': [
                'libs.templatetags'
            ],
            # or as @x-yuri pointed out, you can put them in `libraries`
            'libraries': {
                'my_tags': 'libs.templatetags',
            },
        }
    }]
    

    如果您使用builtins,它在任何地方都可用,您无需为此使用{% load %}
    如果你使用libraries,你需要使用{% load my_tags %}

    【讨论】:

    【解决方案2】:

    这是不可能的。原因是,templatetags 必须驻留在 django 应用程序中。

    来自documentation of templatetags

    自定义模板标签和过滤器必须存在于 Django 应用程序中。如果 它们与现有的应用程序相关,将它们捆绑在那里是有意义的; 否则,您应该创建一个新应用来保存它们。

    应用程序应该包含一个模板标签目录,在同一级别 models.py、views.py 等。如果不存在,请创建它 - 不要忘记__init__.py 文件以确保处理该目录 作为 Python 包。添加此模块后,您将需要 重新启动服务器,然后才能使用标签或过滤器 模板。

    【讨论】:

    • 但是Django应用显示可以在项目根目录django/templatetags/cache.py中使用,并尝试在INSTALLED_APPS中添加templatetags..
    • 它不在根级别。它位于django/django/templatetags/,这是一个app - 请参阅来源:github.com/django/django/tree/master/django/templatetags
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 2021-07-13
    • 2023-04-01
    • 1970-01-01
    • 2019-12-30
    • 2011-12-09
    相关资源
    最近更新 更多