我在settings.py中使用getattr(settings,'MY_CONSTANT_NAME',[])在视图中访问了字符,但是getattr()调用返回了破碎的字符(例如,“ô”变为:“\ XC3 \ XB4" )。
这是view.py中的代码:
from django.conf import settings
def getValueFromSetting(request):
mimetype = 'application/json'
charset=utf-8' datasources = getattr(settings, 'MY_CONSTANT_NAME', [])
config= '{'
config+= '"datasources": ' + str(datasources).replace("'", '"')
config+= '}'
return HttpResponse(config,mimetype)
到目前为止我尝试解决问题:
没有什么能解决问题。
有任何解决这个问题的建议吗?
谢谢
艾蒂安
答案 0 :(得分:1)
我假设您在浏览器中看到了这些\xc3\xb4
字符串。您是否尝试过编辑模板文件以在HTML标头中定义正确的字符集?
<head>
<meta name="description" content="example" />
<meta name="keywords" content="something" />
<meta name="author" content="Etienne" />
<meta charset="UTF-8" /> <!-- <---- This line -->
</head>
在此回答中首次发表评论后进行修改:
我怀疑getattr
不能用于ascii
编码以外的其他操作。您是否认为以下内容不符合您的要求?
from django.conf import settings
def getValueFromSetting(request):
myConstantValue = settings.MY_CONSTANT_NAME
# check myConstantValue here
在上次评论后修改:
我想我现在理解你的问题。您不喜欢视图返回的JSON仅为ASCII的事实。我建议您使用与Python捆绑在一起的dumps
模块提供的json
函数。这是一个例子:
# -*- coding: utf-8 -*-
# other required imports here
import json
def dumpjson(request):
response = HttpResponse(json.dumps(settings.CONSTANT_TUPLE, encoding='utf-8', ensure_ascii=False), content_type='application/json')
return response
示例中的CONSTANT_TUPLE
只是我DATABASES
中settings.py
的副本。
这里重要的一点是ensure_ascii=False
。你能试试吗?这就是你想要的吗?