解决Django换用jinja2模板引擎后admin提示“TemplateDoesNotExist”
来源:互联网 发布:数据库系统实现英文版 编辑:程序博客网 时间:2024/05/22 07:08
jinja2模板引擎号称比Django自带的快10倍,另外还有别的强大的功能,那为什么不用呢?
配置支持jinja2
新增两个文件,把它们放在项目内:
backends.py
import sysfrom django.template.backends import jinja2 as jinja2backendfrom django.template.backends.utils import csrf_input_lazy, csrf_token_lazyfrom django.template import TemplateDoesNotExist, TemplateSyntaxErrorfrom django.utils.module_loading import import_stringimport jinja2import six# Original link:# https://code.djangoproject.com/attachment/ticket/24694/24694.py__author__ = 'carljm'class Jinja2Backend(jinja2backend.Jinja2): def __init__(self, params): self.context_processors = [ import_string(p) for p in params['OPTIONS'].pop('context_processors', []) ] super(Jinja2Backend, self).__init__(params) def from_string(self, template_code): return Template( self.env.from_string(template_code), self.context_processors) def get_template(self, template_name): try: return Template( self.env.get_template(template_name), self.context_processors) except jinja2.TemplateNotFound as exc: six.reraise(TemplateDoesNotExist, TemplateDoesNotExist(exc.args), sys.exc_info()[2]) except jinja2.TemplateSyntaxError as exc: six.reraise(TemplateSyntaxError, TemplateSyntaxError(exc.args), sys.exc_info()[2])class Template(jinja2backend.Template): def __init__(self, template, context_processors): self.template = template self.context_processors = context_processors def render(self, context=None, request=None): if context is None: context = {} if request is not None: context['request'] = request lazy_csrf_input = csrf_input_lazy(request) context['csrf'] = lambda: lazy_csrf_input context['csrf_input'] = lazy_csrf_input context['csrf_token'] = csrf_token_lazy(request) for cp in self.context_processors: context.update(cp(request)) #print(context) return self.template.render(context)
env.py
from __future__ import absolute_importfrom django.contrib.staticfiles.storage import staticfiles_storagefrom django.core.urlresolvers import reversefrom jinja2 import Environmentdef environment(**options): env = Environment(**options) env.globals.update({ 'static': staticfiles_storage.url, 'url': reverse, }) return env
setting.py修改:
CONTEXT_PROCESSORS = [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages',]TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': CONTEXT_PROCESSORS, }, }, { 'BACKEND': 'pathto.backends.Jinja2Backend', 'DIRS': ['templates'], 'APP_DIRS': True, 'OPTIONS': { 'environment': 'pathto.env.environment', 'context_processors': CONTEXT_PROCESSORS, #'extensions': [your extensions here], #不知道干嘛的 }, },]
阅读全文
0 0
- 解决Django换用jinja2模板引擎后admin提示“TemplateDoesNotExist”
- 解决django TemplateDoesNotExist错误
- Django出错提示TemplateDoesNotExist at /
- 更换Django默认的模板引擎为jinja2
- django 模板找不到TemplateDoesNotExist报错!
- 关于Django模板报TemplateDoesNotExist异常
- Day02 Jinja2模板引擎&Bootstrap
- python模板引擎Jinja2基础
- Django TemplateDoesNotExist
- 在django中使用jinja2模版引擎
- django--Admin模板
- mac下安装前端模板引擎Jinja2
- Flask模板引擎——Jinja2
- python中模板引擎Jinja2学习
- Jinja2模板(1) --基本概念,模板引擎,渲染模板
- django TemplateDoesNotExist at /
- python3 Django TemplateDoesNotExist at /
- Django 异常TemplateDoesNotExist
- SSH与SSM学习之Spring11——Spring中的AOP
- MyEclipse 2017 CI8破解方法
- Windows10下搭建汇编语言开发环境(利用DOSBOX和MASM32)
- PyCharm使用技巧:Save File as Template(把当前文件保存为模板)
- 2017.10月自考总结
- 解决Django换用jinja2模板引擎后admin提示“TemplateDoesNotExist”
- mysql学习
- Python爬取网页图片02
- 各种国内yum源
- java新IO---通道(Channel)
- 1662: [Usaco2006 Nov]Round Numbers 圆环数
- 最短路径之迪杰斯特拉
- 6.Linux环境变量
- C学习笔记(一)