初学Django,在访问静态文件时候遇到很多误区,一直配置不成功,在此记录一下。
Django静态文件访问分为两种:一种是Debug模式下,测试开发网站时对静态文件的访问,一种是实际生产环境中对静态文件的访问,例如Nginx+Django配置;
第一种:Debug模式下的配置
1:在setting.py中开启Debug
DEBUG = True
2:在setting.py中设置静态文件目录
STATIC_URL = '/static/'
3:配置url.py
导入规则包: from django.contrib.staticfiles.urls import staticfiles_urlpatterns 追加规则: urlpatterns += staticfiles_urlpatterns()
4:导入js等静态文件
在Django项目中的各个APP下新建static文件夹,放入js等静态文件,以下述方式引用即可:
<script type="text/javascript" src="/static/function.js"></script>
5:重启Django服务器即可
Ps:如果修改了静态文件(html,js)无需重启服务器即生效,如果修改了py文件,请记得重启DjangoWeb服务器。
第二种:生产环境中的配置
注:!!!!!! 请勿将项目和静态文件部署在Root目录下,否则Nginx是无法访问静态文件的。
Django+Nginx的配置可通过uwsgi部署。即将80端口接收的流量全部流入django的端口号8000(可修改),即反向代理。
Django+Nginx的配置请查看http://www.cnblogs.com/fnng/p/5268633.html
Nginx配置如下:
server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; # / 将数据全部通过 uwsgi_pass 跳转至8000端口 location / { include uwsgi_params; uwsgi_pass 0.0.0.0:8000; } #静态文件配置:将静态文件全部放入static文件加下,访问/static文件内容时等同于访问下述文件夹的内容,alias代表绝对路径 location /static { alias /web/django/JansXin/static; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
重载Nginx服务器配置,根据Nginx的配置来访问Js文件:
1:放置JS文件test.js:
/web/django/JansXin/static/test.js
2:访问JS文件:
1: <script type="text/javascript" src="/static/test.js"></script>
2: http://www.xxx.com/static/test.js