我觉得有点尴尬地问一个以前已经回答的问题 - 但是,我觉得让节点提供静态文件而不是django是有区别的。由WebPack捆绑并由Node捆绑的CSS无问题,我遇到问题的是使用get_static_prefix Decorator为管理员CSS和其他几个文件提供服务。
文件结构如下:
root
|
public
- templates
- static
| <-- collectstatic adding files here
- vendor
|
server
- app1
- app2
| settings.py
/etc/nginx/sites-vailable/project
server {
listen xxx.xxx.xxx.xxx:8000;
server_name xxx.xxx.xxx.xxx;
location /static {
alias /root/se/env/public/static/;
}
}
和设置中的设置.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现在也无法正常工作时,我已经对某些内容进行了错误配置。这是:
Not Found: /static/admin/css/base.css
您的location /static
是错误的。alias
指令在形成路径名时取代URI的一部分。location
参数和alias
参数都应以/
结尾,或者都以/
结尾:
location /static {
alias /root/se/env/public/static;
}
或:
location /static/ {
alias /root/se/env/public/static/;
}
实际上,由于alias
参数以location
参数结束,因此您不应使用alias
指令。请参阅alias
文档末尾的注释。
location /static {
root /root/se/env/public;
}