1. 程式人生 > >Django中request物件與response物件

Django中request物件與response物件

瀏覽器向伺服器傳引數,主要通過以下四種方式

檢視函式定義方式

from django.shortcuts import render
from django.http import HttpResponse, JsonResponse
import json

# 1獲取URL中的引數
def get_params(request, id, category):
    print(id, category)
    # 2獲取查詢字串中的引數
    fquery = request.GET.get('fquery')
    sqquery = request.GET.get('squery')
    print(fquery, squery)
    return HttpResponse('OK')

# 3獲取請求體引數
def post1(request):
    # 接收表單資料
    dict1 = request.POST
    id = dict1.get('id')
    categoty = dict1.get('category')
    print(id, category)
    return HttpResponse('接受表單資料成功')

def json1(request):
    # 接受非表單資料
    # 1.接受json資料,型別為Bytes
    json_bytes = request.body
    # 將位元組轉成字串
    json_str = json_bytes.decode()
    # 將字串轉成字典
    json_dict = json.loads(json_str)

    title = json_dict.get('title')
    address = json_dict['address']
    print(title, address)

    # return JsonResponse({'title':'hello'})
    return JsonResponse('hello world', safe=False)

# 4獲取請求頭的引數
def cookie_test(request):
    # cookie的讀寫操作
    # 寫
    response = HttpResponse('ok')
    # response.set_cookie('hello','django',max_age=60*60*24)

    # 讀
    hello = request.COOKIES.get('hello')
    print(request.COOKIES)  # {'hello': 'django'}

    print(hello)
    return response

def session_test(request):
    # session的讀寫操作
    # 寫
    # request.session['name'] = 'wanger'
    # 讀
    # print(request.session.get('name'))
   
    # 刪除某個鍵及值
    # del request.session['name']
    # 刪除所有的鍵及值
    request.session.clear()
    # 刪除整條資料 session唯一識別符號也從redis中刪除
    request.session.flush()
    return HttpResponse('成功')

JsonResponse是HttpResponse的子類,用來返回json資料,當返回的資料不是json型別時,需要指定引數safe=False

app/urls對映關係的定義

from django.conf.urls import url
from .import views
urlpatterns = [
    # 獲取url中的引數,未命名
    # url('^(\d{4})/(\d{2})$', views.get_params),
    # 獲取url中的引數,引數命名
    url(r'^(?P<id>\d{4})/(?P<category>\d{2})/$',views.get_params),
    # 獲取表單資料
    url(r'^post1/$',views.post1),
    # 獲取非表單資料json
    url(r'^json1/$',views.json1),
    # 設定cookie和session快取
    url(r'^cookie/$',views.cookie_test),
    url(r'^session$',views.session_test),
]