为什么我的django管理站点没有css样式

zjm*_*126 71 css django admin

我使用django开发版制作一个django管理站点

但它没有css风格:

替代文字

我能做什么 .

谢谢

Dav*_*ann 55

设定完成后你STATIC_ROOTSTATIC_URL,你可能需要运行

python manage.py collectstatic
Run Code Online (Sandbox Code Playgroud)

  • 也许对某人有用:您应该对``STATIC_ROOT```和``STATIC_URL```使用**相同的名称**,例如:我组合了**“staticfiles”**和**“static”* *,使用 ```STATIC_ROOT=os.path.join(BASE_DIR, "staticfiles")"``` 和 ```STATIC_URL="/static/"```。我的应用程序工作正常,但管理文件不能被发现。因此将其更改为 **“staticfiles”** 或 **“static”** (3认同)

小智 17

ADMIN_MEDIA_PREFIX现在已弃用,请STATIC_URL改用.设置STATIC_URL = '/static/'在settings.py应该做的工作.尝试:

import os.path  import sys

PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
Run Code Online (Sandbox Code Playgroud)

然后:

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'
Run Code Online (Sandbox Code Playgroud)

适用于Django 1.4 pre-alpha SVN-16920.

  • 这对我来说也不起作用。我注意到,如果我(手动)将文件夹“static/admin”移动到“static/css/”内,那么我就可以访问CSS文件。所以看来我可以访问 css 文件,只要它们位于 `static/files` 内,但collectstatic 不会将它们放在那里。当然,手动移动文件夹是行不通的,因为模板继续指向“static/admin”。 (2认同)

Eva*_*ter 13

Django不会自己提供静态文件.你必须告诉它文件的位置.

在settings.py ADMIN_MEDIA_PREFIX将在正确的位置指向Django的.

由于您使用的是开发版本,因此您需要特定开发人员的文档以获取静态文件的操作方法.Adam的链接将引导您进入1.2版本.

  • 答案很好但现在已弃用而且缺少settings.py.请阅读以下内容,了解更多最新解决方案. (6认同)

Chr*_* SH 9

我在Django Book Tutorial之后也遇到了这个问题.在第5章|安装模型中,本书在引用默认INSTALLED_APPS时说明 - "通过在它们前面放置一个哈希字符(#)暂时注释掉所有六个字符串." http://www.djangobook.com/en/2.0/chapter05.html

然后,在第6章中,本书告诉读者取消注释这6行中的4行 - "请注意,我们在第5章中注释掉了这四个INSTALLED_APPS条目.现在取消注释它们."

但是statcifiles行是将CSS恢复到管理页面所需的,因此取消注释'django.contrib.staticfiles',


Shr*_*tty 9

我花了两天的时间来尝试什么不是!

最后,将 settings.py 文件中的 DEBUG 更改为:

调试 = 真

它奏效了。

附注——

安全警告:不要在生产中打开调试运行!


Tay*_*lor 8

我读了几个试图解决这个问题的其他线程......在其他线程中使用别名.这假设您自己的自定义应用正确提供静态文件,这表明您的STATIC_ROOT和STATIC_URL具有正确的设置.

STATIC_ROOT = ''
STATIC_URL = '/static/'
Run Code Online (Sandbox Code Playgroud)

然后(从您的静态目录):

ubuntu@ip-1-2-3-4:/srv/www/mysite.com/app_folder/static$ sudo ln -s /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/ admin
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人...这个主题有很多主题.:(


sol*_*ger 6

我看到有很多答案,但没有一个适合我,所以我发布了我自己的答案。对我来说解决这个问题的方法是将静态文件 URL 添加到应用程序的根 URL 中。我需要将此 URL 添加到我的 URL 列表中:

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Run Code Online (Sandbox Code Playgroud)

您还需要这两个导入:

from django.conf import settings
from django.conf.urls.static import stati
Run Code Online (Sandbox Code Playgroud)

更多内容可以查看这篇文章


Bra*_* P. 5

您需要/project_name/project_name/settings.py设置STATIC_URL告诉您的网站静态文件使用什么 url。

然后设置STATIC_ROOT为文件系统上的某个文件夹,该文件夹与列表中列出的任何目录都不相同STATICFILES_DIRS

STATICFILES_ROOT设置后,您将从python manage.py collectstatic项目目录运行。

这将复制所有管理静态文件以及列表中列出的任何其他文件夹中的所有文件STATICFILES_DIRS。基本上,这会将所有静态文件放在一处,以便您在部署站点时可以将它们移动到 CDN。如果您像我一样没有 CDN,那么您有两种选择:

  1. 将您设置的文件夹添加STATIC_ROOT到列表中STATICFILES_DIRS。这将允许 django 中的静态文件查找器找到所有静态文件。
  2. 将静态文件的整个文件夹移动到文件系统上的其他位置,并直接STATICFILES_DIRS包含该新位置。

我对这个答案的安全性没有发表任何评论,这只是我能够使用我的网络服务器进行小型项目开发的方式。我预计如果你要做更大规模的事情,你会需要一个 CDN,就像 django 建议的那样。

更新:我刚刚遇到这个问题,这个方法并没有完全达到我认为你想要的效果。最终对我有用的是,在我运行之后,collectstatic我只是将其放入的管理静态文件复制STATICFILES_ROOT到我用于自己的静态文件的目录中。这为我解决了这个问题。