zoukankan      html  css  js  c++  java
  • Django中使用jinjia2模板引擎的方法

    在Django中,有自带的模板引擎DjangoTemplates用来渲染模板,使用Django的模版语言,叫做DTL,Jinja2也是十分常见的模板渲染引擎,Django对Jinja2也提供了支持,那么如何将你的Django项目配置成使用Jinja2引擎呢?

    安装Jinja2

    首先,需要在当前环境中安装Jinja2: pip install jinja2 可以通过pip list查看当前python环境中安装的模块。

    配置文件

    Django的配置,一般是放在settings.py文件中,模板的配置也在此文件中,如果你是使用Django-admin startproject project_name来创建的项目的话,配置文件的默认路径为: ./project_name/project_name/settings.py 在配置文件中找到如下代码:

     1     TEMPLATES = [
     2     {
     3     'BACKEND': 'django.template.backends.django.DjangoTemplates',
     4     'DIRS': [],
     5     'APP_DIRS': True,
     6     'OPTIONS': {
     7     # ... some options here ...
     8     },
     9     },
    10     ]

    • 字段解释
      • BACKEND: 即配置的后端模板引擎
      • DIRS:默认为空列表,引擎搜索模板文件的路径
      • APP_DIRS:默认为True(使用Django-admin startproject创建),表示引擎是否去已安装的app路径下去搜索模板文件。

    这段代码即为Django默认生成的模板配置。所以,将引擎替换成Jinja2的第一步,就是修改这一段配置:

    OPTIONS

     1     TEMPLATES = [
     2     {
     3     'BACKEND': 'django.template.backends.jinja2.Jinja2',
     4     'DIRS': [],
     5     'APP_DIRS': True,
     6     'OPTIONS': {
     7     # ... some options here ...
     8     },
     9     },
    10     ]

    使用Jinja2时,需要在OPTIONS字段中,添加环境变量的路径,以使得模版API可以统一起来,你可以创建这样一个文件project_name/jinja2.py,内容如下:

     1 from django.contrib.staticfiles.storage import staticfiles_storage
     2 from django.urls import reverse      
     3 from jinja2 import Environment
     4 def environment(**options):
     5 env = Environment(**options)
     6 env.globals.update({
     7  'static': staticfiles_storage.url,
     8  'url': reverse,
     9  })
    10  return env

    并且在options中添加如下代码:

     1     TEMPLATES = [
     2     {
     3     'BACKEND': 'django.template.backends.jinja2.Jinja2',
     4     'DIRS': [],
     5     'APP_DIRS': True,
     6     'OPTIONS': {
     7     # ... some options here ...
     8     ‘project_name.jinja2.environment’
     9     },
    10     },
    11     ]

    至此,就可以在项目中愉快的使用Jinja2啦~

  • 相关阅读:
    从句分析
    artDialog ( v 6.0.2 ) content 参数引入页面 html 内容
    Java实现 LeetCode 13 罗马数字转整数
    Java实现 LeetCode 13 罗马数字转整数
    Java实现 LeetCode 13 罗马数字转整数
    Java实现 LeetCode 12 整数转罗马数字
    Java实现 LeetCode 12 整数转罗马数字
    Java实现 LeetCode 12 整数转罗马数字
    Java实现 LeetCode 11 盛最多水的容器
    Java实现 LeetCode 11 盛最多水的容器
  • 原文地址:https://www.cnblogs.com/hongdoudou/p/12572954.html
Copyright © 2011-2022 走看看