初學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