题目要求
写一个Hello,world程序,带有环境安装说明
框架说明
pynixweb (http://code.google.com/p/pynixweb)
安装
下载pynixweb 解压开
├─doc └─src ├─apps(存放所有的程序) │ ├─example(hello world的例子) │ └─mysqldemo(mysql的例子,需要导入src/test.sql目录) ├─libs(第三方的库) │ └─templates ├─commons(公共模板文件) ├─example(helloword的模板) ├─mysqldemo(mysql例子的模板) └─static(静态文件) └─blueprint ├─plugins │ ├─buttons │ │ └─icons │ ├─fancy-type │ ├─link-icons │ │ └─icons │ └─rtl └─src
src目录就是pynixweb的目录,同时也是项目目录,pynixweb定义了项目目录结构,提供一个规范的目录结构以方便文件的管理。 运行src/run.py可以启动pynixweb内置的server。
环境要求
*python 2.5 python2.6 *如果需要运行mysql则需要对应的驱动,mysqldb
安装
解压pynixweb,将src复制到工程目录下改名为自己的工程名比如hellworld(如果不需要apps下的例子可以删除掉)
第一个helloworld
1.新建apps目录结构
在apps目录下新建helloworld包(python包是指包含init.py的目录)和helloworld.controller包
2.写挂载点
所有的apps都是通过挂载点挂载到系统上的。在helloworld/init.py中添加
def getMapper(): import example.controllers return { "/":controllers.IndexController() }
将controller.IndexController挂在到系统的"/"路径下
3.写controller
在helloworld/controller/init.py添加
#ecoding: utf-8 -*- from pynixweb.template.template import render_template from pynixweb.controllers.controller import PynixWebController class IndexController(PynixWebController): def index(self): name = "fireflyc" return render_template("hello/index.html", locals()) #由于controller被挂到"/"下,所以可以访问 /sayhello来浏览 def sayhello(self): return "hello"
4.定义模板文件
pynixweb的模板集中放在templates/目录下,我们在目录下新建hello目录来作为我们例子的模板文件夹。新建index.html来作为模板
<metal:macro use-macro="commons/index/macros/main"> <metal:macro fill-slot="body"> <metal:macro use-macro="commons/message/macros/messages" /> <div class="container"> <form action="login" method="post"> 你的姓名<input name="name" value="" type="text" /> <input name="submit" type="submit" value="提交"/> </form> </div> </metal:macro> </metal:macro>
模板使用zope page template。当前的模板风格使用了zpt特有的macro来达到重用板式的目的。当然你也可以通过"include"的方式来引用别的模板文件。具体的可以参考ZPT参考文档。
5.运行结果
执行run.py 访问
http://localhost:8080/ http://localhost:8080/sayhello
总结
由于我非常反对代码生成,所以暂时不会考虑引入代码生成机制。 目前来说pynixweb刚刚起步,比Uliweb年轻,所以还有很多机制不是那么的完善。欢迎大家广泛的提出自己的"最佳实践"。 pynixweb的路线会坚持"细小之处见体贴"的宗旨努力去融合"最佳实践"让代码既灵活又小巧,宁可框架的作者写十行不让使用者写两行。(一行不写是不行的,我坚决反对代码生成)
项目地址
http://code.google.com/p/pynixweb/