让Django在WSGI状态下返回静态文件
最近在写一个api的时候想用浏览器在django服务部署后也能访问到静态文件,于是乎阅读了一下django的源码,发现在runserver的时候,静态文件是由django.contrib.staticfiles.views.serve来提供服务的。
那么处理这个问题就简单了,只需要在urls.py中将serve视图引入,然后配置好自己需要的url就可以了。
1 | from django.contrib.staticfiles.views import serve |
因为我的Nginx的反代设置的是/api到uWSGI,原本的settings里边的STATIC_URL也需要改一下。
1 | STATIC_URL = '/api/static/' |
这样一来,无论是runserver还是通过Nginx+uWSGI部署后都能直接访问到静态文件。当然,不推荐这么做。