2

我正在我的 Mac 上创建一个 Django 开发环境,而管理员没有找到用于样式的媒体文件。这是我的 settings.py 文件:

STATIC_ROOT = '/Users/username/Projects/django/cake/static/'
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/static/admin/'

这是我访问的 URL,http://127.0.0.1/admin/登录部分显示得很好。但是,没有样式。

我将文件从sitepackages/django/contrib/admin/media/目录复制到/Users/username/Projects/django/cake/static/admin/通过:

cp -r /Users/username/.virtualenvs/django/lib/python2.7/site-packages/django/contrib/admin/media/ ./

我可以看到文件在那里。

编辑

我只是查看了源代码,这是用于 css 的路径:href="/static/admin/css/base.css"所以,这应该是问题所在。我将如何解决这个问题?管理员不是已经处理将 static_url 添加到 admin_media_prefix 了吗?

编辑 2

如果我硬编码其中的完整路径admin_media_prefix仍然不使用样式表。

在我的 settings.py 里面:

ADMIN_MEDIA_PREFIX = '/Users/username/Projects/django/cake/static/admin/'

源代码显示:

href="/Users/username/Projects/django/cake/static/admin/css/base.css"

当我进入那个目录时,CSS文件就在那里......

编辑 3

这些在我的 apache 配置中:

Alias /site_media/ /Users/username/Projects/django/cake/media
Alias /static/ /Users/username/Projects/django/cake/static
Alias /media/ /Users/username/.virtualenvs/django/lib/python2.7/site-packages/django/contrib/admin/media
4

5 回答 5

3

我将文件从 sitepackages/django/contrib/admin 目录复制到 /Users/username/Projects/django/cake/static/admin。我可以看到文件在那里。

无需复制sitepackages/django/contrib/admin. 只需复制目录sitepackages/django/contrib/admin/static/admin...

cp -R /path/to/sitepackages/django/contrib/admin/static/admin /Users/username/Projects/django/cake/static

...或者如果您不打算更改管理页面,则符号链接就足够了...

ln -s /path/to/sitepackages/django/contrib/admin/static/admin /Users/username/Projects/django/cake/static

更新

我不使用 django 开发服务器;我正在运行阿帕奇。

/static/目录由 Django 开发服务器自动处理,但如果您尝试通过 apache 执行此操作,则必须Alias在 apache 配置中添加一个指令,类似于...

Alias /static /Users/username/Projects/django/cake/static

它包含在部署文档中,尽管在您进行开发时,使用内置开发服务器要容易得多,因为它会在您更改任何源文件时自动重新启动。

如果您将 apache 与 mod_wsgi 一起使用,那么每次更改源文件时都必须手动重新启动 apache。

于 2013-06-07T14:55:57.727 回答
0

我得到了简单的解决方案,我查看了 /var/log/httpd/ 中的 access_log 文件

127.0.0.1 - - [28/Dec/2013:14:49:20 -0500] "GET /static/admin/css/login.css HTTP/1.1" 200 836 "http://127.0.0.1/admin/" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111109 CentOS/3.6.24-3.el6.centos Firefox/3.6.24"

所以在 /etc/httpd/conf/httpd.conf 文件中配置了静态路径,

Alias /static /usr/lib/python2.6/site-packages/django/contrib/admin/static

内部<VirtualHost 127.0.0.1:80>标签,

然后我使用重新启动服务

服务 httpd 重启

有效!

于 2014-01-01T10:58:05.087 回答
0

我在生产中连接 Django Admin CSS 的解决方案是:

/etc/apache2/apache2.conf

Alias /static/ /home/aaron/public_html/samapet.com/kennel/static/
<Location "/static/">
    Options -Indexes
</Location>

在 settings.py

STATIC_ROOT = /home/aaron/public_html/samapet.com/kennel/static/ # Path to Static Dir
STATIC_URL = '/static/'

重要,别忘了

然后./manage.py collectstatic在生产服务器 SSH shell 中运行。

完毕!

于 2013-12-26T14:54:05.607 回答
0
  1. 检查您复制的管理文件的权限。它们的许可方式是否与您成功访问的其他静态文件相同?
  2. 检查您在浏览器的调试器中遇到的加载错误(是 404 还是其他)
  3. 你在使用 django 的 manager.py 命令 collectstatic 吗?这就是我用来收集目录中的静态文件的方法。见Django 收集静态
于 2013-06-07T15:53:40.653 回答
0

我有同样的问题,但python manage.py collectstatic没有解决我的问题,所以我不得不将 css 文件直接复制到我的静态文件夹中!

$path_to_my_app/static$ tree -L 1
.
├── css
├── fonts
└── js

使用我的配置(ubuntu 12.04 和 python 2.7),admin css 和 js 静态文件的目录在这里:

/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static

然后我将管理文件夹从上面的路径复制到我的应用程序的静态路径,所以它看起来像这样:

.
├── admin
├── css
├── fonts
└── js

这对我有用。

于 2015-12-31T14:01:12.647 回答