我們正在使用 Django1.11,但我們遇到了一些問題,因為我們的標頭Content-Type不包含charset設定為 UTF-8的部分。像這樣的東西:
Content-Type: application/json; charset=UTF-8
我想為所有端點修復這個問題,所以我想在所有中間件運行后包含一個要運行的中間件。問題是我不知道這是否可能。有任何想法嗎?或者替代解決方案?
uj5u.com熱心網友回復:
您可以像這樣撰寫自定義中間件:
from django.utils.deprecation import MiddlewareMixin
class AllIsJsonMiddleware(MiddlewareMixin):
def process_response(self, request, response):
response['Content-Type'] = 'application/json; charset=UTF-8'
return response
但我不推薦這個。這會將所有回應轉換為 JSON。最好使用像https://www.django-rest-framework.org/這樣的框架。
但是,可以使用標準視圖回應...
return HttpResponse(data, content_type='application/json; charset=UTF-8')
...或自定義裝飾器:
from functools import wraps
def json_response(function):
@wraps(function)
def wrap(request, *args, **kwargs):
response = function(request, *args, **kwargs)
response['Content-Type'] = 'application/json; charset=UTF-8'
return response
return wrap
@json_response
def my_view(request):
# ....
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/349998.html
上一篇:Django快取用戶物件
