django筆記
- 2020 年 1 月 22 日
- 筆記
裝飾器:require_http_method()
當然你可以在視圖函數內丟棄那些期望之外的請求(比如上例中的POST /report/1234/), 但更簡單的做法是使用Django預置的require_http_methods(methods)裝飾器進行限制, 讓框架幫你攔截那些不想要的請求。
例如,下面的示例聲明了視圖函數v_login()只支援GET和POST方法:
from django.views.decorators.http import require_http_methods @require_http_methods(['GET','POST']) def v_login(request):pass
這時,如果用戶試圖使用其他HTTP方法(比如DELETE)請求指向這個視圖函數的URL, Django框架將自動攔截並返回405錯誤 —— 在HTTP協議中,405程式碼表示:請求的方法 不被允許。
有幾個語法糖可以縮短require_http_method()這個裝飾器的書寫長度:
require_GET() - 聲明被裝飾的視圖僅支援GET方法 require_POST() - 聲明被裝飾的視圖僅支援POST方法 require_SAFE() - 聲明被裝飾的視圖僅支援GET和HEAD方法django實現delete/put方法:
django對於PUT/DELETE請求並沒有像POST/GET那樣有一個字典結構。我們需要手動處理request.body獲取參數:
from django.http import QueryDict put = QueryDict(request.body) key = put.get('key') field = put.get('field') field_value = put.get('field-value')
View Code
外部項目調用djang 資料庫:
import os os.environ.setdefault('DJANGO_SETTINGS_MODULE','kingcmdb.settings') import django django.setup() from web import models django 時區設置:
ANGUAGE_CODE = 'zh-hans' #中文支援,django1.8以後支援;1.8以前是zh-cn TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True USE_TZ = False #默認是Ture,時間是utc時間,由於我們要用本地時間,所用手動修改為false!!!!