【发布时间】:2017-07-18 21:42:07
【问题描述】:
我觉得问一个之前已经回答过的问题有点尴尬 - 但是我觉得让 node 提供静态文件而不是 django 有一点不同。由 webpack 捆绑并由节点提供的 css 工作没有问题,我遇到的问题是使用 get_static_prefix 装饰器提供管理 css 和另外几个其他文件。
文件结构如下:
root
|
public
- templates
- static
| <-- collectstatic adding files here
- vendor
|
server
- app1
- app2
| settings.py
/etc/nginx/sites-available/项目
server {
listen xxx.xxx.xxx.xxx:8000;
server_name xxx.xxx.xxx.xxx;
location /static {
alias /root/se/env/public/static/;
}
}
以及settings.py中的设置
STATIC_URL = '/root/se/env/public/static/'
MEDIA_URL = '/media/'
STATIC_ONLY_URL = '/static_only/'
if not DEBUG:
MEDIA = '/media',
STATIC_ROOT = '/root/se/env/public/static/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'public', 'media')
STATICFILES_DIRS = '/root/se/env/public/vendor/static/',
我一直在兜圈子。我对 Django 很陌生,并不真正了解它是如何工作的。据我所知, STATICFILES_DIRS 是 collectstatic 从中收集静态文件的地方,而 STATIC_ROOT 是运行 collectstatic 后转储静态文件的地方。我认为 STATIC_URL 是我出错的地方 - 但我没有太多运气弄清楚它。
就目前而言,当 DEBUG = True 时,admin css 也无法正常工作,所以我配置错误。结果是:
Not Found: /static/admin/css/base.css
【问题讨论】:
-
您是否尝试将 STATIC_URL 更改为“/static/”?还可以尝试将 nginx 位置 /static 更改为 /static/。
-
@Kamal - 感谢您的回复。我已经尝试过了,但仍然一无所获。我已经用更多信息更新了这个问题。