3

getattr(settings、'MY_CONSTANT_NAME'、[])を使用してビューでアクセスするsettings.pyにアクセント付きの文字がありますが、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)                      

問題を解決するためにこれまでに行ったこと:

  • 私は# ---コーディング:utf-8 ---をsettings.pyとviews.pyの最初の行に入れました
  • settings.pyの特殊文字の前にu'ô'またはunicode('ô')を置きます
  • DEFAULT_CHARSET='utf-8'をsettings.pyに入れました
  • .decode('utf-8')、.encode('utf-8')、.decode('iso-8859-1')、.encode('iso-8859-1')の可能なすべての組み合わせを試してみますsettings.pyまたはviews.py..の特殊文字

問題を解決するものはありません。

この問題を解決するための提案はありますか?

ありがとうございました

エティエンヌ

4

1 に答える 1

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ののコピーです。DATABASESsettings.py

ここで重要なのはですensure_ascii=False。やってみませんか?それはあなたが望むものですか?

于 2012-05-26T15:42:12.807 に答える