前置作業
在開始之前,若你還沒將環境建立起來的話,先安裝 Django 並建立專案:
# 安裝 Django
python -m pip install Django
# 查看 Django 版本
python -m django --version
# 建立 Django 專案
django-admin startproject <project-name>
專案預設結構如下:
project-name/
├── project-name
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
處理 JSON 請求
基本上利用 Django 處理 JSON Request 很簡單,當客戶端發起一個帶有 JSON 資料的 Request (如:POST、PUT),Django 接收到後該資料會存在於 Request 物件的 body 中。暸解後,實作起來就很簡單了,以下為範例:
import json
from django.views import View
class DummyView(View):
def post(self, request):
if request.body:
# Decode data to a dict object
json_data = json.loads(request.body)
# Then do things with json_data ...
當然每次都要重複一樣的動作實在是有點麻煩,因此我們可以利用 View Decorator。
利用 Decorator 預先處理 JSON
利用 Django 提供的 Decorator (裝飾器) 簡化許多需要重複做的事情。首先新增 decorators.py,然後加入一個名為 dummy_json 的裝飾器,參考以下內容:
import json
from functools import wraps
from django.conf import settings
from django.http import HttpRequest, HttpResponse
def dummy_json(view_func):
@wraps(view_func)
def wrapper_view_func(request, *args, **kwargs):
# Add simple validation
if request.content_type == 'application/json':
if request.body:
# Decode data to a dict object
request.json = json.loads(request.body)
else:
request.json = None
return view_func(request, *args, **kwargs)
return wrapper_view_func
完成後,之後我們就可以在 View 中直接使用 dummy_json,像這樣:
import json
from decorators import *
from django.views import View
from django.utils.decorators import method_decorator
class DummyView(View):
@method_decorator(dummy_json)
def post(self, request):
json_data = request.json
# Then do things with json_data ...
Environment :
・ Unix-like System
Reference :
・ Django