设计¶
下面是我们的wiki应用程序设计的快速概述,帮助我们理解在本教程中我们将要做的更改。
总体¶
我们选择使用 reStructuredText wiki文本中的标记。从restructuredtext到html的转换是由广泛使用的 docutils
Python模块。我们将把这个模块添加到项目的依赖项列表中。 setup.py
文件。
模型¶
名为的根资源 Wiki
将是wiki页面名称到页面资源的映射。页面资源将是 Page 类。它们存储文本内容。
类URL /PageName
将使用wiki遍历 [ PageName ] =页面。结果上下文是现有页面的页面资源。
要将页面添加到wiki,将创建页面资源的新实例。它的名称和引用将添加到wiki映射中。
一页名为 FrontPage
包含文本 这是头版 将在初始化存储时创建。它将用作wiki主页。
意见¶
将有三个视图来处理添加、编辑和查看wiki页面的正常操作,另外还有一个视图用于wiki首页。将使用两个模板,一个用于查看,一个用于添加和编辑wiki页面。
从1.5版起 Pyramid 不再提供模板系统。在本教程中,我们将使用 Chameleon . 变色龙是 ZPT ,这是一种基于XML的模板语言。
安全性¶
我们最终将为应用程序添加安全性。我们将用于此操作的组件如下。
用户,字典映射 userids 对应的密码。
组,字典映射 userids 到他们所属的组的列表。
groupfinder
,一个 授权回调 查找用户和组。它将在新的security.py
文件。安 ACL 连接到根 resource . 下面每一行详细说明 ACE :
行动
校长
许可
允许
每个人
视图
允许
编辑组
编辑
权限声明被添加到视图中,以在处理每个请求时断言安全策略。
另外两个视图和一个模板将处理登录和注销任务。
总结¶
下表列出了与每个视图关联的URL、上下文、操作、模板和权限:
URL |
视图 |
语境 |
行动 |
模板 |
许可 |
---|---|---|---|---|---|
/ |
view_wiki |
维基 |
重定向到/FrontPage |
||
页面名 |
view_page [1] |
页 |
显示现有页面 [2] |
view.pt |
看法 |
/PageName/edit_page |
edit_page |
页 |
显示包含现有内容的编辑表单。 如果表单已提交,请重定向到/pagename |
edit.pt |
编辑 |
/add_page/PageName |
add_page |
维基 |
创建页面 PageName 在存储中,显示没有内容的编辑表单。 如果表单已提交,请重定向到/pagename |
edit.pt |
编辑 |
/登录 |
登录 |
维基,禁止 [3] |
显示登录窗体。 如果表单已提交,请进行身份验证。
|
login.pt |
|
登出 |
注销 |
维基 |
重定向到/FrontPage |