gpt4 book ai didi

带有 Jinja2 : Contrib app Admin not working 的 Django 1.8

转载 作者:行者123 更新时间:2023-12-04 14:26:49 25 4
gpt4 key购买 nike

我升级到全新安装的 Django 1.8 并开始使用 Jinja2,因为它说现在支持它,而且 Jinja2 有一些我可以在我的项目中使用的功能。

在完成将我的应用程序的模板适应 Jinja2 并利用现在可用的新功能后,我发现 contrib 应用程序管理员不再工作。

“/admin/login/处的模板不存在”

所以事实证明,contrib app Admin 只有为 DjangoTemplates 而不是为 Jinja2 制作的模板。我先做了一件幼稚的事情,并在 [...]/site-packages/django/contrib/admin 中创建了一个符号链接(symbolic link)来自 templatesjinja2但是模板使用的是 DjangoTemplates 细节,所以 Jinja2 不会接受它们。我删除了符号链接(symbolic link)。

我切换到 Jinja2 的方式是在我的项目中进行以下更改 settings.py :

 TEMPLATES = [
{
- 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'BACKEND': 'django.template.backends.jinja2.Jinja2',
'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',
- ],
- },
},
]

有谁知道:
  • 如何让贡献应用管理员继续使用 DjangoTemplates,同时让我自己的应用使用 Jinja2,或
  • 如果有另一个支持 Jinja2 的管理应用程序与默认应用程序一样好,或
  • 如果还有其他我忽略或应该注意的事情?

  • 感谢您的时间 :)

    最佳答案

    理想的解决方案是让默认模板系统优先于 Jinja 系统。唯一的区别是 DIRS指定的需要不同。如果您只关心管理员,则该过程相当容易。

    TEMPLATES = [
    {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [], # This is particularly important as it will not look into the default template directory
    },
    {
    'BACKEND': 'django.template.backends.jinja2.Jinja2',
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    },
    ]

    请记住,目录结构不得允许默认模板系统访问您的主页。

    关于带有 Jinja2 : Contrib app Admin not working 的 Django 1.8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29420094/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com