zoukankan      html  css  js  c++  java
  • Django系列教程:[X]学习中的常见问题(不定期更新)

    注明:python版本为3.3.1、Django版本为1.5.1,操作系统为Windows7,其他版本有一些不同的地方读者可以自行探讨。

    为了解决学习Django学习过程中遇到的一些问题,特地列出此章,在以后的教程中,如果还有什么问题也将逐渐更新到此处。

    [一:中文乱码问题]

    Django系列教程的第四章有人提问刚刚更改Django中的Templates文件,发现在模版中加入中文字符后Django页面显示乱码,改一改后又会报错,我稍微看了一下,因为教程中使用的都是英文并没有涉及到这个问题,所以我花了点时间搞出几个乱码错误,最后得到成功的配置如下:

     首先写入中文的html文件必须为utf-8编码,将文件另存为可以修改编码。至于有些人说的加入标签修改字符格式倒不一定是必须的。

    然后修改settings.py文件,加入下面两行:

    FILE_CHARSET = 'utf-8'
    DEFAULT_CHARSET = 'utf-8'

     至于LANGUAGE_CODE = 'zh-cn'也不是必须的,改这个是让Django显示中文,和字符格式没太大关系。

     改完这两个文件就可以正常显示中文了。或者在你的文件前面加上以下两行代码其中之一行:
    # -*- coding=UTF-8 -*-
    # -*- coding=gb18030 -*-

    这行代码也可以,视具体情况选择添加哪一行,如下面的例子我就是添加了第二行。

    下面说下我具体的操作。
    首先:启动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改为utf8格式,在输入上面的地址:则发现可以正常显示:我的名字叫hello

    另外关于decode和encode函数的使用对中文字符的编码和解码我们在以后的Django教程中会陆续提到,这里就不再赘述了。

    好了,尽量将你的数据库和文件都保存为utf8格式可以省去不少麻烦哦!

    另附:关于unicode编码的一些知识可以参见此文:http://www.pythonclub.org/python-basic/encode-detail 

     [二:待更新]

    本人既是python的初学者也是Django的初学者,写这一系列教程的目的就是为了加深自己的理解,希望大家多多包涵和指教,有什么问题请留言,谢谢。
    鹜落霜洲,雁横烟渚,分明画出秋色。暮雨乍歇,小楫夜泊,宿苇村山驿。何人月下临风处,起一声羌笛。离愁万绪,闲岸草、切切蛩吟似织。 为忆芳容别后,水遥山远,何计凭鳞翼。想绣阁深沉,争知憔悴损,天涯行客。楚峡云归,高阳人散,寂寞狂踪迹。望京国。空目断、远峰凝碧。
  • 相关阅读:
    springboot 和 spring clould 的版本匹配问题
    行到水穷处,坐看云起时!
    转: 从单体应用 -> SOA--> 微服务 ,服务治理 [熔断,限流,降级,服务恢复,服务容错,监控等等]---> RPC ---> 下一代技术[Service Mesh]
    spring-boot自定义线程池
    千与千寻的内容抓手
    哲学三问
    简约的人生
    关于中间件整理
    此心光明,亦复何言!
    能容的下你身边比你优秀的人---是一种修行
  • 原文地址:https://www.cnblogs.com/thunderest/p/3080338.html
Copyright © 2011-2022 走看看