== 题目要求 == 写一个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来作为模板 {{{
你的姓名
}}} 模板使用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/|http://code.google.com/p/pynixweb/]] ---- [[PyWEB技术分类]]