为什么要使用jinja2模板引擎?------在django中使用并配置

jinja2具有强大的自动HTML转义系统,可以有效地阻止跨站脚本攻击。 模板继承机制,此机制可以使得所有的模板都具有相似一致的布局,也方便了开发人员对模板的修改和管理。 高效的执行效率,Jinja2引擎在模板第一次加载时就把源码转换成Python字节码,加快模板执行时间。

1.安装Jinja2扩展包

pip install Jinja2

2.创建Jinja2模板引擎环境

  --在项目包目录-->utils目录中创建jinja2_env.py文件

# newsdemo/utils/jinja2_env.py
from jinja2 import Environment
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
"""
确保可以使⽤jinja2模板引擎中的{{ url('') }} {{ static('') }}这类语句

<a href='/login/'></a>  # 硬编码

<a href='{{url('namespace:name')}}'></a>  # 软编码

"""
def environment(**options):
  '''jinja2环境'''

  # 创建环境对象
  env = Environment(**options)

  # 自定义语法:{{static('静态文件行对路径')}}  {{url('路由的命名空间')}}
  env.globals.update({
  'static': staticfiles_storage.url,  # 获取静态文件的前缀
  'url': reverse,  # 重定向
  })

  # 返回环境对象
  return env

3.在settings中配置模板引擎让整个系统中识别到jinja2的模板


TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',  # jinja2模板引擎
        'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 找模板文件定义到Jinja2
        'APP_DIRS': True,  # True的意思:如果在上面的目录下没有找到模板文件,那就去子应用去找模板文件,如果为False就不去子应用去查找
        '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',
                'newsapp.mycontext.get_channels',  # 添加自定义全局上下文
            ],
            # 补充Jinja2模板引擎环境
            'environment': 'newdemo.utils.jinja2_env.environment',
        },
    },
    
    #原本的django模板留着不用删除
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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',
            ],
        },
    },
]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值