首页 文章

使用Jinja2时管理中断

提问于
浏览
1

出于某种原因,当我尝试使用Jinja2作为我的模板引擎而不是Django模板引擎时,我的wagtail管理界面正在破坏 . 我的前端工作正常,它在app / jinja2中找到我的模板 . 这是一个添加了wagtail的Django项目 .

这是我在尝试访问/ admin时遇到的错误,

TemplateDoesNotExist at /admin/wagtailadmin/home.html
Request Method: GET
Request URL:    http://127.0.0.1:8000/admin/
Django Version: 1.11
Exception Type: TemplateDoesNotExist
Exception Value: wagtailadmin/home.html
Exception Location: /Users/dbroadlick/Desktop/projects/codero2/virtualenv/lib/python3.6/site-packages/django/template/loader.py in get_template, line 25
Python Executable:  /Users/dbroadlick/Desktop/projects/codero2/virtualenv/bin/python
Python Version: 3.6.1
Python Path:    ['/Users/dbroadlick/Desktop/projects/codero2',
 '/Users/dbroadlick/Desktop/projects/codero2/virtualenv/lib/python36.zip',
 '/Users/dbroadlick/Desktop/projects/codero2/virtualenv/lib/python3.6',
 '/Users/dbroadlick/Desktop/projects/codero2/virtualenv/lib/python3.6/lib-dynload',
 '/Users/dbroadlick/Desktop/projects/codero2/virtualenv/lib/python3.6/site-packages']
Server time:    Mon, 24 Jul 2017 21:40:59 +0000

这是我的模板配置的样子,

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.jinja2.Jinja2',
    'APP_DIRS': True,
    'OPTIONS': {
        'extensions': [
            'wagtail.wagtailcore.jinja2tags.core',
            'wagtail.wagtailadmin.jinja2tags.userbar',
            'wagtail.wagtailimages.jinja2tags.images',
        ],
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},
]

它还说它正在尝试使用它不应该使用的jinja2引擎,因为使用Django模板编程了wagtail管理员 .

1 回答

  • 3

    您的 TEMPLATES 设置已将Jinja2配置为唯一可用的模板引擎,因此请求的模板路径为's nothing to trigger the ' traditional ' Django Template engine behaviour that the Wagtail admin relies on (namely: to look inside each app' s /template 文件夹 wagtailadmin/home.html ) . 结果,模板永远不会被找到 . 您需要在 TEMPLATES 设置中包含Jinja2和DjangoTemplates的配置 - 类似于:

    TEMPLATES = [
        {
            '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',
                ],
            },
        },
        {
            'BACKEND': 'django.template.backends.jinja2.Jinja2',
            'APP_DIRS': True,
            'OPTIONS': {
                'extensions': [
                    'wagtail.wagtailcore.jinja2tags.core',
                    'wagtail.wagtailadmin.jinja2tags.userbar',
                    'wagtail.wagtailimages.jinja2tags.images',
                ],
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    

    请注意,你需要有一些约定来告诉Django应该使用哪个引擎呈现哪些模板 - 使用上面的配置,我相信将你的Jinja2模板放在 some_app/jinja2/ 而不是 some_app/templates/ 应该照顾它 .

相关问题