无法覆盖 django/grappelli base.html 模板
Trouble overriding django/grappelli base.html template
根据 Django 教程,我在 BASE_DIR 下创建了一个模板目录,并添加了一个 admin 和一个 Grappelli 子文件夹,稍后从这两个文件夹中复制 base.html 并将每个文件夹放入各自的目录中。然后我做了一些更改,添加了一些 CSS 和 JS...重新加载测试服务器,但我的管理界面没有反映任何更改,甚至我添加的 CSS/JS 也不存在!
我在 settings.py 中的模板:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, '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',
'django.core.context_processors.request',
],
},
},
]
我一定是做错了什么,但我不知道是什么,文档也没有帮助。
答案:问题是 'DIRS':[] 仅适用于 Django 1.8+,对于 Django 1.7- 我们需要使用以下内容:
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
)
my settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
PROJECT_DIR = os.path.dirname(os.path.dirname(__file__) + '/../')
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.request',
'apps.projects.context_processors.status',
)
SITE_ID = 1
ROOT_URLCONF = 'apps.urls'
WSGI_APPLICATION = 'apps.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
STATIC_URL = '/static/'
STATIC_ROOT = PROJECT_DIR + '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = PROJECT_DIR + '/media/'
TEMPLATE_DIRS = (
PROJECT_DIR + '/templates/',
)
根据 Django 教程,我在 BASE_DIR 下创建了一个模板目录,并添加了一个 admin 和一个 Grappelli 子文件夹,稍后从这两个文件夹中复制 base.html 并将每个文件夹放入各自的目录中。然后我做了一些更改,添加了一些 CSS 和 JS...重新加载测试服务器,但我的管理界面没有反映任何更改,甚至我添加的 CSS/JS 也不存在!
我在 settings.py 中的模板:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, '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',
'django.core.context_processors.request',
],
},
},
]
我一定是做错了什么,但我不知道是什么,文档也没有帮助。
答案:问题是 'DIRS':[] 仅适用于 Django 1.8+,对于 Django 1.7- 我们需要使用以下内容:
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
)
my settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
PROJECT_DIR = os.path.dirname(os.path.dirname(__file__) + '/../')
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.request',
'apps.projects.context_processors.status',
)
SITE_ID = 1
ROOT_URLCONF = 'apps.urls'
WSGI_APPLICATION = 'apps.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
STATIC_URL = '/static/'
STATIC_ROOT = PROJECT_DIR + '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = PROJECT_DIR + '/media/'
TEMPLATE_DIRS = (
PROJECT_DIR + '/templates/',
)