django - 如何在 Django 1.11 中设置字符集标题
问题描述
我们正在使用 Django1.11 并且我们遇到了一些问题,因为我们的标头Content-Type
不包含charset
设置为 UTF-8 的部分。像这样的东西:
Content-Type: application/json; charset=UTF-8
我想为所有端点解决这个问题,所以我想在所有中间件都运行后包含一个中间件来运行。问题是我不知道这是否可能。有任何想法吗?还是替代解决方案?
解决方案
您可以像这样编写自定义中间件:
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):
# ....
推荐阅读
- php - 如何将多个数据添加到表中的多个字段中
- php - 如何将 GMT +530 添加到 - M j, Y, g:ia 格式
- php - Yii2数据确认中如何添加新行
- angular - 错误:找不到模块“./gitignore”
- javascript - 以这种特定方式比较真实性的最简单方法是什么?
- mysql - 将 Apache 访问日志存储到 MySQL
- spring-integration - 在春季批量集成中,主节点是否与从节点共享相等的分区,或者我们可以将特定的分区共享给特定的节点
- java - 如何通过 Gson 打印没有敏感属性的 JSON 对象?
- javascript - 未定义的“addEventListener”
- matlab - Matlab中如何将表格的所有元素相乘?