Skip to main content
 首页 » 编程设计

python之将 django 升级到 1.6 后,django admin css 不工作

2025年05月04日31del

我有两个 django 应用程序,一个是 django version 1.3.1,另一个是 django 1.2.3,前端和管理部分的 css 文件都可以正常使用/工作。但最近我将这两个应用程序都升级到了 django 1.6。现在升级前端站点(css)后工作正常但管理 css 不工作/服务,我不知道升级后出了什么问题。可能是某些静态服务结构在 django 最新版本中已更改?以下是我的一些设置文件选项

django 应用一设置

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 应用二设置

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', 
) 

那么有人可以知道如何解决这个问题吗?并使管理 CSS 正常工作?

请您参考如下方法:

要让静态文件工作,需要做一些事情。这取决于你的具体问题是什么。尝试以下操作:

  1. 查看网络服务器的错误日志,从网络服务器的 Angular 了解问题所在。如果错误提示缺少文件,那么您可能错误地配置了静态文件设置,或者您可能存在权限问题。

  2. 当您浏览到有问题的应用程序中的页面时,查看它的源代码,并记下它指向的 url。它指向正确的地方吗?如果不是,那么您的元素或应用程序设置(或您的模板)有问题。

我的最佳猜测是您的元素设置有问题。看起来您在元素的 settings.py 文件中缺少这些行:

STATIC_URL= '/some/relative/url/'  
STATIC_ROOT = '/path/to/your/project/static/' 
STATICFILES_DIRS = ('path/to/your/project/static/',) 

第一个确定应用于引用 css 和其他静态文件(例如应用程序输出的 html 中)的 url,第二个和第三个指定服务器文件系统上可以找到文件的实际目录.

为此,您的网络服务器必须将 STATIC_URL 映射到 STATIC_ROOT。如果您使用的是 Apache,则需要将以下指令放入 VirtualHost block 中:

Alias    /static/    /path/to/your/project/static/ 

此外,apache(或者更确切地说,运行 apache 的用户)必须具有对静态目录的读取权限!

如果静态文件的这种分离对您来说是新的,您应该阅读 this .

您不应该将您的静态文件(例如 css)物理地放在 STATIC_ROOT 目录中。相反,将它们放在各自应用程序的静态文件夹中。假设您将一些 css 文件放在 /path/to/your/app_name/static/css/ 中。在您的元素中,运行 python manage.py collectstatic,Django 会将 css 文件复制到 /path/to/your/project/static/app_name/css/。您的 STATIC_ROOT 决定了它们的去向。

如果您仍然遇到问题,请检查您的网络服务器错误日志,并回发您遇到的 Django 和/或网络服务器错误。