设定数据库 虽然Turbogears需要配置的东西很少,但数据库的设定总归是需要的吧?我们可以在代码中设定,但是quickstart其实 已经帮我们生成必要的ini格式的配置文件了 因为我们现在是在开发环境中而不是发布环境中,所以我们需要编辑"dev.cfg"文件.只需要把对应的sqlobject.dburi 设定取消注释,然后加上必要的信息(host,username,password,数据库名称等等)即可 停止web服务(control-c),然后重新运行启动脚本

python wiki20-start.py

创建数据库 既然我们已经在model.py中创建了我们的数据库结构,加上我们又告诉了turbogear数据库的位置(设定数据库),现在就可以真正的创建数据库了

tg-admin sql create

tg-admin sql命令是对SQLObject库 sqlobject-admin的一个封装,这个命令寻找在配置文件里的相关信息来连接数据库 显示wiki页面 简单的无法相信,但我们确实已经做好显示页面的准备了. 第一步,把welcome.kid改名为page.kid 然后,我们更改page.kid模板的内容

<div style="float:right; width: 10em">
   Viewing <span py:replace="pagename">Page Name Goes Here</span>
   <br/>
   You can return to the <a href="/">FrontPage</a>.
  </div>

<div py:replace="XML(data)">Page text goes here.</div> 

你可以直接用浏览器浏览kid文件.那些占位文字可以帮你提前查看调整页面的布局. Turbogears尽可能的减少了你索要编写的代码量,但不是完全避免.让我们首先在controller.py里加上一些imports

from model import Page, hub
from docutils.core import publish_parts

接着,我们改写index方法: 1.重新设置模板为page.kid 2.设置一个默认的页面名pagename="FrontPage" 3.从数据库里读取页面 4.格式化取出的文本 5.正确处理unicode 6.返回文本给模板

@turbogears.expose(html="wiki20.templates.page")
def index(self, pagename="FrontPage"):
   page = Page.byPagename(pagename)
   content = publish_parts(page.data, writer_name="html")["html_body"]
   return dict(data=content, pagename=page.pagename) 

只需要6行代码即可!我们最后返回的字典变量不但为模板提供了数据而且还有其他魔力,我们后面会见识到 如果你浏览页面时在publish_parts这一句遇到KeyError错误,那么你就需要更新docutils库到最新版