django中使用jinja2模板

Posted 洪豆豆的记录

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django中使用jinja2模板相关的知识,希望对你有一定的参考价值。

(admin.E403) A ‘django.template.backends.django.DjangoTemplates’ instance must be configured in TEMPLATES in order to use the admin application.| 使用jinjia2时报错

TEMPLATES = [
   
        \'BACKEND\': \'django.template.backends.jinja2.Jinja2\',
        \'DIRS\': [os.path.join(BASE_DIR,\'templates\'),],
        \'APP_DIRS\': True,
        \'OPTIONS\':
            \'context_processors\': [
                \'django.template.context_processors.debug\',
                \'django.template.context_processors.request\',
                \'django.contrib.auth.context_processors.auth\',
                \'django.contrib.messages.context_processors.messages\',
            ],
            \'environment\':\'app.base_jinja2.environment\' # 具体路径按照您实际的来            
        ,
    ,
   
        \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',
        \'DIRS\': [os.path.join(BASE_DIR, \'templates\')]
        ,
        \'APP_DIRS\': True,
        \'OPTIONS\':
            \'context_processors\': [
                \'django.template.context_processors.debug\',
                \'django.template.context_processors.request\',
                \'django.contrib.auth.context_processors.auth\',
                \'django.contrib.messages.context_processors.messages\',
            ],
        ,
       
]

 

https://www.cnblogs.com/Bert-Sun/p/12575967.html

django中使用jinja2模板,配置及(admin.E403)错误解决

https://blog.csdn.net/qq_44982845/article/details/104818136

Django之Django模板与Jinja2模板的使用

https://blog.csdn.net/qq_38628046/article/details/126395642

 

https://blog.csdn.net/qq_44982845/article/details/104818136

关于如何在 django 2.2.7 版本更换模板引擎为 jinja2

https://coding.imooc.com/learn/questiondetail/jxkpVPBVkB0PrwRQ.html

在 Jinja2 模板引擎中使用 django-widget-tweaks

【中文标题】在 Jinja2 模板引擎中使用 django-widget-tweaks【英文标题】:Using django-widget-tweaks with Jinja2 template engine 【发布时间】:2018-05-04 19:05:37 【问题描述】:

我使用 django v1.11.7 和 Jinja2 v2.10 作为模板引擎。

在我的网站中,我希望使用引导程序呈现表单。我发现django-widget-tweaks 可以用于此集成。

此包不适用于 Jinja 模板,因为它需要将自定义标签集加载到 Jinja 环境中。加载标签集可能很复杂,因为我可能需要编写一个扩展。

有没有一种简单的方法可以让 django-widget-tweaks 与 Jinja 一起工作?或者还有其他方法可以将 boostrap 与 Jinja 集成吗?

【问题讨论】:

【参考方案1】:

有点晚了,但也许这会有所帮助。

我所做的是导入我想使用的函数并在我的 jinja 模板中调用它们:

app_root.jinja2.py

from jinja2 import Environment
from jinja2 import contextfunction

from widget_tweaks.templatetags.widget_tweaks import render_field


def environment(**options):
    env = Environment(**options)
    env.globals.update(
        'render_field': render_field,
    )
    return env

在模板中

% set class = class + "my-html-class" %
 render_field(field, class) 

编辑:任何有一点 Jinja 和模板标签经验的人都知道这行不通。对于我目前的需求,我在我的 jinja 配置中定义了以下两个函数,并将在以后评估我的需求。

def set_attr(bound_field, attr, value):
    bound_field.field.widget.attrs[attr] = value
    return bound_field

def add_class(bound_field, value):
    try:
        bound_field.field.widget.attrs['class'] += value
    except KeyError:
        bound_field.field.widget.attrs['class'] = value
    return bound_field

编辑 2 其他有用的链接:https://github.com/niwinz/django-jinja/issues/140

为了使这个解决方案发挥作用,我必须进行以下更改: jinja2.py

from jinja2 import Environment
from widget_tweaks.templatetags.widget_tweaks import add_class
from widget_tweaks.templatetags.widget_tweaks import set_attr


def environment(**options):
    env = Environment(**options)
    env.filters['set_attr'] = set_attr
    env.filters['add_class'] = add_class
    return env

template.html

 form.field |set_attr('attr:val') 
 form.field |add_class('my_class') 

【讨论】:

以上是关于django中使用jinja2模板的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 1.8 中使用 jinja2 作为模板引擎

django中使用jinja2模板

在 Jinja2 模板中使用 DateTimeFields 显示本地时间 - Django

在 Jinja2 模板引擎中使用 django-widget-tweaks

使用 jinja2 作为 django 模板引擎时出错:无法导入名称“环境”

如何检查 jinja2/django 模板中任何变量的大小写?