在Django的setting中有個MIDDLEWARE列表,裏面的東西能夠理解爲過濾管道,裏面有個安全過濾管道: from django.middleware.csrf import CsrfViewMiddleware裏面有四個經常使用的方法:javascript
默認狀況下不使用任何方法或裝飾器,在Django項目配置文件setting.py文件的MIDDLEWARE的csrf管道會攔截post請求。html
在使用form表單發送post請求時要在表單的裏面加入{% csrf_token %}java
在使用Ajax發送post請求時要在Ajax裏面的請求投headers加入{'X-CSRFToken':$.cookie('csrftoken')} ---(要導入Jquery文件和Jq的cookies文件)若是想全局設置headers就可使用:python
//使用此方法就不用再ajax中再設置headers請求頭 <script> $(function(){ $.ajaxSetup({ beforeSend:function(xhr){ xhr.setRequestHeader("X-CSRFToken",$.cookie('csrftoken')); } }); }); </script>
$.cookie('csrftoken')是cookies的csrftoken隨機字符串,csrf原理和cookie類似,他會給通過的信息作標記,攜帶此標記纔不會被攔截,$.cookie('csrftoken')的做用就是獲取cookie的那個標記(csrf隨機生成的字符串)ajax
因爲中間件是針對全局操做的,當註釋 #'django.middleware.csrf.CsrfViewMiddleware',整個網站的連接都不會執行CSRF驗證,若是要針對某個連接請求操做使用CSRF操做能夠在Views文件的方法上使用裝飾器:@csrf_protect(聲名使用CSRF)-- 全局不使用CSRF時,某幾個須要使用時 --數據庫
因爲中間件是針對全局操做的,當使用 'django.middleware.csrf.CsrfViewMiddleware',整個網站的連接都會執行CSRF驗證,若是要針對某個連接請求禁止經過CSRF操做能夠在Views文件的方法上使用裝飾器:@csrf_exempt(聲名禁止CSRF)-- 全局使用CSRF時,某幾個不須要使用時 --django
在settings.py文件裏面配置:緩存級別bootstrap
Django的六種緩存方式:緩存
開發調試:調試時使用,實際內部不作任何操做安全
內存:緩存的內容存在內存中
文件:緩存的內容存在文件中
數據庫:緩存的內容存在數據庫中
Memcache緩存(python-memcached模塊):此緩存使用python-memcached模塊鏈接Memcache(另一臺機器)能夠有三種連接方式,連接另外一臺機器,連接本機,連接多臺機器。
Memcache緩存(pylibmc模塊):此緩存使用pylibmc模塊鏈接Memcache(另一臺機器)能夠有三種連接方式,連接另外一臺機器,連接本機,連接多臺機器。
關於緩存更詳細的內容請看轉載連接:https://www.cnblogs.com/wupeiqi/articles/5246483.html
關於緩存更詳細的內容請看轉載連接:https://www.cnblogs.com/wupeiqi/articles/5132791.html
CACHES = { 'default':{ 'BACKEND':'django.core.cache.backends.dummy.DummyCache' #引擎(開發調試的引擎) 'TIMEOUT':300, #緩存超時時間(默認300,None表示永不過時,0表示當即過時) 'OPTIONS':{ 'MAX_ENTRIES':300, #最大緩存個數(默認300) 'CULL_FREQUENCY':3, #緩存到達最大數以後,剔除緩存個數的比例:1/CULL_FREQUENCY:3,只的是分數1/3,三分之一。 }, 'KEY_PREFIX':'', #緩存key的前綴(默認空) 'VERSION':1, #緩存key的版本(默認1) 'KEY_FUNCTION':函數名, #生成key的函數(默認函數會生成爲:[前綴:版本號:key]) } }
內置信號:在指定信號中注入操做函數
做用:使用Django內部定義的信號,在指定位置 注入 指定操做(觸發信號)
自定義信號:可應用於任何地方,可動態配置
注:也能夠自定義信號
大多用於大型程序的可擴展項
Model signals pre_init #django的modal執行其構造方法前,自動觸發 post_init #django的model執行其構造方法後,自動觸發 pre_save #django的model對象保存前,自動觸發 post_save #django的model對象保存後,自動觸發 pre_delete #django的model對象刪除前,自動觸發 post_delete #django的model對象刪除後,自動觸發 m2m_changed #django的model中使用m2m字段操做第三張表(add,remove,clear)先後,自動觸發 #程序啓動時,檢測已註冊的app中modal類,對於每個類,自動觸發 Management signals pre_migrate #執行migrate命令前,自動觸發 post_migrate #執行migrate命令後,自動觸發 Request/resonse signals request_atarted #請求到來前,自動觸發 request_finished #請求結束後,自動觸發 got_request_exception #請求異常後,自動觸發 Test signals setting_changed #使用test測試修改配置文件時,自動觸發 template_rendered #使用test測試渲染模板時,自動觸發 Database Wrappers connection_created #建立數據庫鏈接時,自動觸發
使用方法: from django.db.models.signals import class_prepared def callback(sender,**Kwargs): print("pre_init_callback") print(sender,kwargs) pre_init.connect(callback) #導入方法:鉤子函數名.connect(寫好的函數) #要在項目的__init__.py文件中寫或導入
下載BootStrap,詳細操做請看官方文檔。