django覆盖管理员在本地工作而非生产

时间:2016-08-16 22:53:15

标签: python django django-templates django-admin django-settings

我的django 10项目中有以下目录结构:

/my-project/ # project dir
    +app1
    +templates
        +admin
            base.html
        404.html
        500.html

我的模板属性在设置中如下所示:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            'templates/',
        ],
        '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',
                'common.context_processors.site_info',
            ],
        },
    },
]

我的自定义base.html显示在我的本地计算机上。当我将其上传到我的生产服务器时,它不再覆盖并使用项目文件夹中的base.html文件。

我已根据建议here的应用顺序进行了更改,并尝试打印模板属性的dirs元素,该元素打印出像here这样的“模板/”。

有谁知道我如何才能在生产环境中使用它?

1 个答案:

答案 0 :(得分:1)

您必须在设置中使用绝对路径以避免出现问题。例如:

import os

PROJECT_ROOT = os.path.join(os.path.dirname(__file__), '..', '..')
# depending where your settings.py live

...
    'DIRS': [
        os.path.join(PROJECT_ROOT, 'templates'),
    ],