Djangoシリーズチュートリアル:[X]学習でよくある質問(不定期更新)
4888 ワード
注:pythonバージョンは3.3.1、Djangoバージョンは1.5.1、オペレーティングシステムはWindows 7であり、他のバージョンでは読者が自分で検討できるところがあります.
Djangoの学習中に発生した問題を解決するために、この章をリストします.今後のチュートリアルでは、何か問題があれば、徐々にここに更新されます.
[一:中国語の文字化けし問題]
Djangoシリーズチュートリアルの第4章では、DjangoのTemplatesファイルを変更したばかりの質問がありました.最後に成功した構成は次のとおりです.
まず中国語を書き込むhtmlファイルはutf-8符号化でなければならず、ファイルを符号化を修正できるように保存します.ラベルを付けて文字のフォーマットを変更する必要はありません.
次にsettingsを変更する.pyファイル、次の2行を追加します.
LANGUAGEについてコード='zh-cn'も必須ではありませんが、これを変更するとDjangoに中国語を表示させ、文字フォーマットとはあまり関係ありません.
この2つのファイルを変更すると、中国語が正常に表示されます.または、ファイルの前に次の2行のコードの1行を追加します.
この行のコードもいいです.具体的にどの行を追加するかを選択します.次の例のように、私は2行目を追加しました.
次に私の具体的な操作を説明します.
まず、python webサービスを起動します.コマンドライン:
その後firstsiteディレクトリの下でtestcnを確立する.pyファイルはANSI形式で保存され、次のコードが入力されます.
最後にurlsを構成します.pyファイルはブラウザで開くことができます.コードは次のとおりです.
ブラウザ入力を開くと、http://127.0.0.1:8000/testcn/の結果、次のエラーが発生しました.
もちろん、これは中国語の文字化けして間違いではありません.これは文字が出ません.これが間違いです.どうやってこの間違いを解決するのか、実はtestcn.pyファイルの最初の行に次の行のコードを加えればいいです.
この時testcnをpyをutf 8フォーマットに変更して、上のアドレスを入力します:正常に表示することができることを発見します:私の名前はhelloです
また、decodeとencode関数の中国語文字の符号化と復号化については、今後のDjangoチュートリアルで続々と言及しますが、ここでは省略します.
はい、できるだけあなたのデータベースとファイルをutf 8フォーマットに保存すると、多くの面倒を省くことができます.
添付:unicode符号化に関するいくつかの知識は、この文書:http://www.pythonclub.org/python-basic/encode-detailを参照してください.
[二:更新待ち]
私はpythonの初心者でありDjangoの初心者でもあります.この一連のチュートリアルを書く目的は自分の理解を深めるためです.
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の初心者でもあります.この一連のチュートリアルを書く目的は自分の理解を深めるためです.