Django静态文件在默认设置下不加载

2 投票
2 回答
2866 浏览
提问于 2025-04-17 03:44

我安装了Bitnami Django堆栈,并启用了管理模块,还按照教程为“投票”创建了一个管理菜单。

但是,当我访问/admin/时,页面上全是白色的纯文本,所有的CSS和图片都显示404错误。

我所做的只是:

在settings.py文件中启用了installed_apps:

'django.contrib.admin',

在urls.py文件中取消了注释:

from django.contrib import admin
admin.autodiscover()
url(r'^admin/', include(admin.site.urls)),

取消注释。

在settings.py中,我尝试了默认设置,也试过这个:

MEDIA_ROOT = ''
MEDIA_URL = '/media/'
STATIC_ROOT = ''
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
import os
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))
STATICFILES_DIRS = (
  os.path.join(SITE_ROOT, 'static/'),
)

但是都没有用,它就是找不到/admin/media/css/等目录下的静态文件。

我确保我的Windows系统路径中包含了Django的/bin目录。我甚至尝试加入了/contrib,但还是没有帮助。

我把Django安装在了:

C:\DjangoStack\apps\django

我的项目安装在:

C:\Users\dexter\BitNami DjangoStack projects\Alpha

然后我输入:localhost/Alpha/admin来访问管理页面。

2 个回答

1

我来自BitNami团队,刚刚看到这个问题。我不确定你是不是在用旧版本,但至少在新版本的BitNami DjangoStack中,你只需要确保ADMIN_MEDIA_PREFIX指向/static/admin/,如果你按照这个链接里的说明来做的话。你不需要把静态文件复制到你的项目目录,因为Django会自动使用django/contrib目录里的文件。

不过,目前我们把ADMIN_MEDIA_PREFIX设置为/static/admin/media,因为当应用程序通过Apache服务器提供服务时,行为会有所不同,而不是通过Django自带的服务器。我们意识到这可能会让刚开始接触Django的用户感到困惑,我们正在努力保持新项目的默认配置,同时也让演示项目可以通过Apache来提供服务。

4

我差点没看到这个答案,直到我重新读了你的问题,最后一行让我注意到了:“我输入:localhost/Alpha/admin去管理。”这说明你所有的URL设置都是错的。

现在,你的设置是:

MEDIA_URL = '/media/'
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'

而这些应该是:

MEDIA_URL = '/Alpha/media/'
STATIC_URL = '/Alpha/static/'
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'

另外,你在STATICFILES_DIRS里不需要写“static/”。所以把这个设置去掉吧。

撰写回答