我有两个django应用程序,其中一个django version 1.3.1
,另一个是django 1.2.3
,前端和管理部分css文件正在服务/正常工作。但最近我将这两款应用升级为django 1.6
。现在升级前端站点(css)工作正常,但管理员css不工作/服务,我不知道升级后出了什么问题。可能是某些静态服务结构在django最新版本中有所改变?以下是我的一些设置文件选项
django app一个设置
SETTINGS_DIR = os.path.dirname(__file__)
DJANGO_PROJ_DIR = os.path.abspath(os.path.join(SETTINGS_DIR, os.path.pardir))
SITE_DIR = os.path.abspath(os.path.join(DJANGO_PROJ_DIR, os.path.pardir))
HOME = DJANGO_PROJ_DIR
STATIC_DOC_ROOT= HOME + '/static/'
MEDIA_ROOT = HOME + '/media'
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/media/'
ADMIN_ROOT = '/admin/'
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.contrib.messages.context_processors.messages",
"django.core.context_processors.request")
# List of callables that know how to import templates from various sources.
if DEBUG:
TEMPLATE_LOADERS = [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
]
else:
TEMPLATE_LOADERS = [
('django.template.loaders.cached.Loader',(
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'forum.modules.template_loader.module_templates_loader',
# 'forum.skins.load_template_source',
)),
]
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django_sorting.middleware.SortingMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'pagination.middleware.PaginationMiddleware',
)
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
HOME + '/templates',
)
django app两个设置
MIDDLEWARE_CLASSES = (
'django.middleware.gzip.GZipMiddleware',
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'pagination.middleware.PaginationMiddleware',
)
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.media',
'django.core.context_processors.request',
)
PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '%s/media/admin/' % MEDIA_URL
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
)
那么有人知道如何解决这个问题吗?并使管理员工作?
答案 0 :(得分:0)
要使静态文件起作用,需要做一些事情。这取决于你特别关注的问题。请尝试以下方法:
查看您的网络服务器的错误日志,了解从您的网络服务器的角度出现了什么问题。如果错误抱怨丢失文件,那么您可能错误配置了静态文件设置,或者您可能有权限问题。
当您浏览违规应用中的某个网页时,请查看该网页的来源,并记下它指向的网址。它指向正确的地方吗?如果没有,那么您的项目或应用程序设置(或模板中)存在问题。
我最好的猜测是你的项目设置有问题。看起来您从项目的settings.py文件中遗漏了这些行:
STATIC_URL= '/some/relative/url/'
STATIC_ROOT = '/path/to/your/project/static/'
STATICFILES_DIRS = ('path/to/your/project/static/',)
第一个确定应该用于引用css和其他静态文件的URL(例如应用程序输出的html),第二个和第三个确定服务器文件系统上可以找到文件的实际目录。
为此,您的网络服务器必须将STATIC_URL
映射到STATIC_ROOT
。如果您使用的是apache,则需要将以下指令放在VirtualHost
块中:
Alias /static/ /path/to/your/project/static/
此外,apache(或者更确切地说,运行apache的用户)必须具有对静态目录的读访问权!
如果您认为这是静态文件的分离,则应阅读this。
您不应将静态文件(例如css)放在STATIC_ROOT
目录中。相反,将它们放在各自应用程序的静态文件夹中。假设你在/path/to/your/app_name/static/css/
内放了一些css文件。在您的项目中,运行python manage.py collectstatic
,Django会将css文件复制到/path/to/your/project/static/app_name/css/
。您的STATIC_ROOT
决定了他们的去向。
如果您仍然卡住,请检查您的网络服务器错误日志,并回复您收到的django和/或网络服务器错误。