我问一个已经回答过的问题有点尴尬-但是我觉得让节点提供静态文件而不是Django有一个区别点.由webpack捆绑并由node提供的css正常工作,我遇到的问题是使用get_static_prefix装饰器提供admin css和其他两个文件.
文件结构如下:
root
|
public
- templates
- static
| <-- collectstatic adding files here
- vendor
|
server
- app1
- app2
| settings.py
/ etc / Nginx / sites-available / project
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时,管理员css也无法正常工作,所以我配置错误.结果是:
Not Found: /static/admin/css/base.css
最佳答案
您的位置/静态错误.别名指令在形成路径名时会替换URI的某些部分. location参数和alias参数都应以/结束,或者都不应以/结束:
location /static {
alias /root/se/env/public/static;
}
要么:
location /static/ {
alias /root/se/env/public/static/;
}
实际上,由于alias参数以location参数结尾,因此您根本不应使用alias指令.请参阅the alias
documentation末尾的注释.
location /static {
root /root/se/env/public;
}