设定数据库
虽然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模板的内容{{{
Viewing
Page Name Goes Here
You can return to the
FrontPage.
Page text goes here.
}}}
你可以直接用浏览器浏览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库到最新版