出处:http://pynix.cnblogs.com/ 本文版权归作者和博客园共有.
因为python并不是特别为web开发而生,所以现在很多的python使用者都在开发能够让python运行于web的框架.Karrigell就是现在为数众多的python/web框架之一
简介
Karrigell是一个功能强大且灵活的python/web框架,为web开发提供了多种解决方案.并且,很重要的,它的安装和使用都非常的简单.即使是python的初学者,也不会在使用Karrigell的时候犯迷糊,并且Karrigell也没有因为结构简单而限制python的一些特性.它提供了自己的web服务器完成工作,但是也非常容易的和其他的web服务器(例如apache)结合工作,所以如果你选择了Karrigell,你仍然可以使用之前一直在使用的web服务器.
Cheetah是一个用Python写的模板系统与代码生成工具。Cheetah提供了一门简单语言,用来定义提供基本流控制和对象访问的构造模板。
文件准备
1.python2.6
2.Karrigell-3.1.1 下载地址:http://sourceforge.net/projects/karrigell/files/Full%20package/Karrigell-3.1.1/
3.Cheetah-2.4.4 下载地址:http://pypi.python.org/pypi/Cheetah/2.4.4
开始安装
1.安装Python2.6 (过程略)
2.安装Karrigell-3.1.1 (过程略)
测试Karrigell能否正常运行:
如果能打开以上网页说明没什么问题
开始配置Cheetah:
1.解压下载的Cheetah2.4.4压缩包
2.cmd进入解压后的目录,输入命令 python setup.py build
编译完成后打开build/lib文件夹
复制Cheetah文件夹到 karrigell的package文件夹中:
然后打开extensions文件夹找到Cheetah.py文件,将此文件重命名为Cheetahs.py 当然你也可以随便改个其他名字 :)
开始创建一个应用
打开Karrigell的www文件夹,创建一个新的文件夹 pynix,在其中建立两个文件: index.ks 和 index.tmpl
启动 Karrigell,打开浏览器:
运行成功!
将index.tmpl文件添加几个汉字,刷新:
出现编码错误!
问题原因(可能不正确):
1.文件的二进制编码: ANSI ,UTF-8等 windows下默认应该是ANSI
2.python代码的编码: coding:utf-8 等
3.模板文件的二进制编码:ANSI,UTF-8
4.Karrigell的默认编码:ascii ?
解决方法:
经过多次试验发现编码问题冲突的地方主要有两个:一个是页面的默认编码,当页面出现乱码时重新选择正确的编码如果能够显示正常的话可以在处理文件中添加:
RESPONSE['Content-Type'] = "text/html; charset=utf-8" 这一句主要是在页面显示时指定使用哪种编码方式.另一种主要就是在调用 Cheetah模板时出现乱码了,或许这和Karrigell的默认编码有关,要解决这个问题需要这句代码:
sys.setdefaultencoding('utf-8');
使用前需要: import sys 和 reload(sys);
具体setdefaultencoding utf-8还是gb2312主要取决与文件的编码方式,如果模板文件时ANSI编码则使用: sys.setdefaultencoding('gb2312');如果模板文件格式是UTF-8格式则需要使用:sys.setdefaultencoding('utf-8');
自己的方案:
由于模板文件可能使用一些设计工具创建,一般编码都是ANSI格式的所以使用sys.setdefaultencoding('gb2312');对于python文件则全部使用UTF-8格式.
我将sys.setdefaultencoding('utf-8');这行代码加在了 server_config.py文件中,省的总是忘记调用.
另外将RESPONSE['Content-Type'] = "text/html; charset=utf-8" 放在了 data/www/conf.py文件中:
BTW:刚刚发现使用安装版的Karrigell居然可以不要安装Python环境也能正常运行!!!嘎嘎~ :-P