Django1.11基礎視圖

Django視圖

路由命名與reverse反解析

在項目urls中的include函數,使用namespace參數定義路由命名空間

  • url(r'^',incude('book.urls',namespqce='book'))
  • 命名空間表示,凡是book.urls中定義的路由,均屬於namespqce指明的book名下
  • 命名空間的做用:避免不一樣應用中的路由使用了相同的名字發生衝突,使用命名空間區別開python

    定義普通路由時,採用name參數指明路由的名字

    根據路由的名稱,返回具體的路徑

  • reverse('namespace:name')
  • reverse('name')redis

    HttpRequest對象

    from django.http import HttpResponse

    Url路徑參數

  • 127.0.0.1:8000/book/1/200
  • 路由中使用正則分組接受
    • url(r('book/(?P \d+)/(?P \d+)'), views.get_url)
  • 視圖中接受關鍵字參數
    • def get_url(request,cat_id,goods_id):數據庫

      Django中的QueryDict對象

  • 能夠一鍵多值的字典
  • HttpResponse對象的屬性GET,POST獲取的都是QueryDict對象
  • get('鍵', 默認值)
    • 獲取此鍵的值,獲取不到返回默認值
  • getlist('鍵',默認值)
    • 獲取此鍵的全部值,獲取不到返回默認值django

      查詢字符串Query String

  • 127.0.0.1:8000/book?k1=v1&k2=v2&k2=v3
  • 查詢字符串不區分請求方式,即便客戶端進行POST方式進行請求,依然能夠經過request.GET獲取請求中的查詢字符串數據
  • def get_str(request):
    dict = request.GET
    v1 = dict.get('k1')
    v2_v3 = dict.getlist('k2')
    return HttpResponse('get_str_ok')json

    請求體

  • 表單類型Form Data
    • 表單類型的請求體數據,能夠經過request.POST屬性獲取,返回QueryDict對象
    • def get_form(request):
      dict = request.POST
      v1 = dict.get('k1')
      v2_v3 = dict.getlist('k2')
      return HttpRequest('get_form_ok')
  • 非表單類型Non-Form Data
    • 非表單類型的請求數據,Django沒法自動解析,
      經過request.body屬性獲取原始的請求數據,本身按照請求體格式(JSON,XML)手動解析
      request.body返回bytes類型
      • JSON數據
        • import json
        • def post_json(request):
          json_str = request.body
          req_data = json.loads(json_str)
          # 獲取到字典
          return HttpResponse('ok')緩存

          請求頭

  • request.META
    • 獲取請求頭中的數據,返回字典類型cookie

      其餘HttpRequest對象屬性

  • request.methos
  • request.usersession

    HttpResponse對象

    HttpResponse

  • from django.http import HttpResponse
  • HttpResponse(,content=響應體,content_type=響應體數據類型,status=狀態嗎)
  • response = HttpResponse(響應體)
    response.status_code=400 # 狀態碼
    response['itcast'] = 'python' # 自定義響應頭
    return responseapp

    HttpRespnse子類

  • 快速設置狀態嗎分佈式

    JsonResponse

  • 自動將數據轉換爲json字符串
    自動設置響應頭Content-type爲application/json
    • return JsonResponse({'city': 'beijing', 'subject': 'python'})

      redirect重定向

  • return redirect('/get_header')

    狀態保持

  • 設置Cookie
    • HttpResponse.set_cookie(cookie名,value=cookie值,max_age=cookie有效期)
  • 讀取cookie
    • request.COOKIES
      • 返回字典類型數據
  • 刪除cookie
    • response.delete_cookie('cookie鍵')

      Session

  • Django默認啓用session
  • session存儲的位置
    • 數據庫
    • 本地緩存
    • 混合存儲
    • redis:分佈式
  • session操做
    • request.session['鍵']=值
      • 設置session
    • request.session.get('鍵',默認值)
      • 獲取session
    • request.session.clear()
      • 刪除session值
    • request.session.flush()
      • 刪除session鍵和值
    • del request.session['鍵']
      • 刪除指定鍵和值
    • request.session.set_expiry(value)
      • 設置有效期
      • value是一個整數,則value秒後過時
      • value爲0,會話結束過時
      • value爲None,採用默認有效期,兩週

XMind: ZEN - Trial Version

相關文章
相關標籤/搜索