题目要求
写一个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
└─srcsrc目录就是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/ http://code.google.com/p/pynixweb/]
["PyWEB技术分类"]
