Djangoシリーズチュートリアル:[X]学習でよくある質問(不定期更新)

4888 ワード

注:pythonバージョンは3.3.1、Djangoバージョンは1.5.1、オペレーティングシステムはWindows 7であり、他のバージョンでは読者が自分で検討できるところがあります.
Djangoの学習中に発生した問題を解決するために、この章をリストします.今後のチュートリアルでは、何か問題があれば、徐々にここに更新されます.
[一:中国語の文字化けし問題]
Djangoシリーズチュートリアルの第4章では、DjangoのTemplatesファイルを変更したばかりの質問がありました.最後に成功した構成は次のとおりです.
まず中国語を書き込むhtmlファイルはutf-8符号化でなければならず、ファイルを符号化を修正できるように保存します.ラベルを付けて文字のフォーマットを変更する必要はありません.
次にsettingsを変更する.pyファイル、次の2行を追加します.
FILE_CHARSET = 'utf-8'
DEFAULT_CHARSET = 'utf-8'

LANGUAGEについてコード='zh-cn'も必須ではありませんが、これを変更するとDjangoに中国語を表示させ、文字フォーマットとはあまり関係ありません.
この2つのファイルを変更すると、中国語が正常に表示されます.または、ファイルの前に次の2行のコードの1行を追加します.
# -*- coding=UTF-8 -*-
# -*- coding=gb18030 -*-

この行のコードもいいです.具体的にどの行を追加するかを選択します.次の例のように、私は2行目を追加しました.
次に私の具体的な操作を説明します.
まず、python webサービスを起動します.コマンドライン:
python manage.py runserver

その後firstsiteディレクトリの下でtestcnを確立する.pyファイルはANSI形式で保存され、次のコードが入力されます.
from django.template import Template,Context
from django.http import HttpResponse
def testcn(request):
    html="<html><body>{{name}}</body></html>"
    t=Template(html)
    c=Context({'name':'     hello!'})
    return HttpResponse(t.render(c))

最後にurlsを構成します.pyファイルはブラウザで開くことができます.コードは次のとおりです.
url(r'^testcn/$','firstsite.testcn.testcn',name='testcn'),

ブラウザ入力を開くと、http://127.0.0.1:8000/testcn/の結果、次のエラーが発生しました.
SyntaxError at /testcn/
(unicode error) 'utf-8' codec can't decode byte 0xce in position 0: invalid continuation byte (testcn.py, line 6)Request Method: GET 
Request URL: http://127.0.0.1:8000/testcn/ 
Django Version: 1.5.1 
Exception Type: SyntaxError 
Exception Value: (unicode error) 'utf-8' codec can't decode byte 0xce in position 0: invalid continuation byte (testcn.py, line 6) 
Exception Location: D:\PROGRAM FILES\PYTHON33\lib\site-packages\django\utils\importlib.py in import_module, line 35 
Python Executable: D:\PROGRAM FILES\PYTHON33\python.exe 
Python Version: 3.3.1 
Python Path: ['D:\\Djcode\\firstsite',
 'C:\\Windows\\system32\\python33.zip',
 'D:\\PROGRAM FILES\\PYTHON33\\DLLs',
 'D:\\PROGRAM FILES\\PYTHON33\\lib',
 'D:\\PROGRAM FILES\\PYTHON33',
 'D:\\PROGRAM FILES\\PYTHON33\\lib\\site-packages'] 
Server time: Wed, 15 May 2013 17:48:22 +0800 

もちろん、これは中国語の文字化けして間違いではありません.これは文字が出ません.これが間違いです.どうやってこの間違いを解決するのか、実はtestcn.pyファイルの最初の行に次の行のコードを加えればいいです.
# -*- coding=gb18030 -*-

この時testcnをpyをutf 8フォーマットに変更して、上のアドレスを入力します:正常に表示することができることを発見します:私の名前はhelloです
また、decodeとencode関数の中国語文字の符号化と復号化については、今後のDjangoチュートリアルで続々と言及しますが、ここでは省略します.
はい、できるだけあなたのデータベースとファイルをutf 8フォーマットに保存すると、多くの面倒を省くことができます.
添付:unicode符号化に関するいくつかの知識は、この文書:http://www.pythonclub.org/python-basic/encode-detailを参照してください.
[二:更新待ち]
私はpythonの初心者でありDjangoの初心者でもあります.この一連のチュートリアルを書く目的は自分の理解を深めるためです.