-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathindex.html
178 lines (178 loc) · 11 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>敏捷 Web 开发实践</title>
<link rel="stylesheet" href="/stylesheets/master.css" type="text/css">
<link rel="stylesheet" href="/stylesheets/syntax.css" type="text/css">
<link rel="stylesheet" href="/docbook/includes/css/docbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
<meta name="description" content="敏捷也许就是保障项目成功的“银弹”。 笔者通过最近完成的一个小项目切身体验了一下 Python 语言在 Web 敏捷开发上的强大力量,愿与您共享。 (版本号: 0.2.008feb1,最后更新时间: 2008-09-13)">
<link rel="start" href="index.html" title="敏捷 Web 开发实践">
<link rel="next" href="psm.preface.html" title="1. 前言">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<script language="javascript" type="text/javascript" src="/docbook/includes/js/header.js"></script><script language="javascript"> write_header("/docbook"); </script><div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">敏捷 Web 开发实践</th></tr>
<tr>
<td width="20%" align="left"> </td>
<th width="60%" align="center"> </th>
<td width="20%" align="right"> <a accesskey="n" href="psm.preface.html"><img src="/docbook/includes/images/docbook/next.png" alt="下一页"></a>
</td>
</tr>
</table>
<hr>
</div>
<div class="article" lang="zh-cn">
<div class="titlepage">
<div>
<div><h1 class="title">
<a name="index"></a>敏捷 Web 开发实践</h1></div>
<div><h3 class="subtitle"><i>—— pySvnManager 项目实战</i></h3></div>
<div><div class="author"><h3 class="author"><span class="firstname"><a href="http://www.ossxp.com" target="_top">http://www.ossxp.com</a></span></h3></div></div>
<div><div class="revhistory"><table border="1" width="100%" summary="Revision history">
<tr><th align="left" valign="top" colspan="3"><b>修订历史</b></th></tr>
<tr>
<td align="left">修订 0.2</td>
<td align="left">2008/09/12</td>
<td align="left"><a href="mailto:worldhello.net%20.AT.%20gmail.com" target="_top">蒋鑫</a></td>
</tr>
<tr><td align="left" colspan="3">随 Pylons 升级为 0.9.7,pySvnManager 升级为 0.3。修改 WebHelpers 以及 routing 等相关内容。</td></tr>
<tr>
<td align="left">修订 0.1</td>
<td align="left">2008/07/20</td>
<td align="left"><a href="mailto:worldhello.net%20.AT.%20gmail.com" target="_top">蒋鑫</a></td>
</tr>
<tr><td align="left" colspan="3">创建。</td></tr>
</table></div></div>
<div><div class="abstract">
<p class="title"><b>摘要</b></p>
<p><span class="emphasis"><em>敏捷</em></span>也许就是保障项目成功的“银弹”。
笔者通过最近完成的一个小项目切身体验了一下 Python 语言在
Web 敏捷开发上的强大力量,愿与您共享。</p>
<p>(版本号: 0.2.008feb1,最后更新时间: 2008-09-13)</p>
</div></div>
</div>
<hr>
</div>
<div class="toc">
<p><b>目录</b></p>
<dl>
<dt><span class="sect1"><a href="psm.preface.html">1. 前言</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="psm.preface.background.html">1.1. 项目背景</a></span></dt>
<dt><span class="sect2"><a href="psm.preface.implement.html">1.2. 最终的实现</a></span></dt>
<dd><dl>
<dt><span class="sect3"><a href="psm.preface.implement.html#psm.preface.implement.install">1.2.1. 软件安装</a></span></dt>
<dt><span class="sect3"><a href="psm.preface.implement.html#psm.preface.implement.deploy">1.2.2. 网站部署</a></span></dt>
<dt><span class="sect3"><a href="psm.preface.implement.html#psm.preface.implement.config">1.2.3. 配置</a></span></dt>
<dt><span class="sect3"><a href="psm.preface.implement.html#psm.preface.implement.start">1.2.4. 运行应用</a></span></dt>
<dt><span class="sect3"><a href="psm.preface.implement.html#psm.preface.implement.snapshot">1.2.5. 软件截屏</a></span></dt>
</dl></dd>
</dl></dd>
<dt><span class="sect1"><a href="psm.tdd.html">2. 模型的敏捷开发</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="psm.tdd.iter1.html">2.1. 迭代1:测试框架的建立</a></span></dt>
<dd><dl>
<dt><span class="sect3"><a href="psm.tdd.iter1.html#psm.tdd.iter1.goal">2.1.1. 假想任务目标</a></span></dt>
<dt><span class="sect3"><a href="psm.tdd.iter1.html#psm.tdd.iter1.unittest.failed">2.1.2. 建立测试用例</a></span></dt>
<dt><span class="sect3"><a href="psm.tdd.iter1.html#psm.tdd.iter1.unittest.pass">2.1.3. 编写模组,使测试用例通过</a></span></dt>
<dt><span class="sect3"><a href="psm.tdd.iter1.html#psm.tdd.iter1.code.coverage">2.1.4. 完善测试用例</a></span></dt>
<dt><span class="sect3"><a href="psm.tdd.iter1.html#psm.tdd.iter1.nosetests">2.1.5. 用例管理和 nosetests</a></span></dt>
</dl></dd>
<dt><span class="sect2"><a href="psm.tdd.continued.html">2.2. 持续迭代</a></span></dt>
<dt><span class="sect2"><a href="psm.tdd.final.html">2.3. 最终完成的 svnauthz</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="psm.pylons.html">3. 华丽外衣——Pylons造</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="psm.pylons.basic.html">3.1. 建立 Web 应用框架</a></span></dt>
<dd><dl>
<dt><span class="sect3"><a href="psm.pylons.basic.html#psm.pylons.basic.controller">3.1.1. 理解控制器</a></span></dt>
<dt><span class="sect3"><a href="psm.pylons.basic.html#psm.pylons.basic.routing">3.1.2. 修改控制器映射</a></span></dt>
<dt><span class="sect3"><a href="psm.pylons.basic.html#psm.pylons.basic.model">3.1.3. 加入模组和单元测试</a></span></dt>
</dl></dd>
<dt><span class="sect2"><a href="psm.pylons.controller.check.html">3.2. 控制器check的实现</a></span></dt>
<dd><dl>
<dt><span class="sect3"><a href="psm.pylons.controller.check.html#psm.pylons.framework.workflow">3.2.1. MVC中的数据流</a></span></dt>
<dt><span class="sect3"><a href="psm.pylons.controller.check.html#psm.pylons.page.design">3.2.2. 页面模板布局</a></span></dt>
<dt><span class="sect3"><a href="psm.pylons.controller.check.html#psm.pylons.template.basic">3.2.3. 模板语法示例</a></span></dt>
<dt><span class="sect3"><a href="psm.pylons.controller.check.html#psm.pylons.controller.method.index">3.2.4. 控制器的index方法</a></span></dt>
<dt><span class="sect3"><a href="psm.pylons.controller.check.html#psm.pylons.controller.method.submit">3.2.5. 控制器的submit方法</a></span></dt>
</dl></dd>
<dt><span class="sect2"><a href="psm.pylons.ajax.html">3.3. 用AJAX取代传统的form提交</a></span></dt>
<dd><dl>
<dt><span class="sect3"><a href="psm.pylons.ajax.html#psm.pylons.ajax.framework">3.3.1. 启用Prototype的JavaScript框架</a></span></dt>
<dt><span class="sect3"><a href="psm.pylons.ajax.html#psm.pylons.ajax.cgi">3.3.2. 改造CGI(controller)</a></span></dt>
<dt><span class="sect3"><a href="psm.pylons.ajax.html#psm.pylons.ajax.webpage">3.3.3. 页面模板充分利用DOM 和JavaScript</a></span></dt>
<dt><span class="sect3"><a href="psm.pylons.ajax.html#psm.pylons.ajax.sample1">3.3.4. 改造示例一:用Ajax.Updater直接进行区域更新</a></span></dt>
<dt><span class="sect3"><a href="psm.pylons.ajax.html#psm.pylons.ajax.sample2">3.3.5. 改造示例二:用Ajax.Request获取并处理数据</a></span></dt>
</dl></dd>
<dt><span class="sect2"><a href="psm.pylons.controller.unittest.html">3.4. 控制器的单元测试</a></span></dt>
<dd><dl>
<dt><span class="sect3"><a href="psm.pylons.controller.unittest.html#psm.pylons.nosetest">3.4.1. 配置nosetests</a></span></dt>
<dt><span class="sect3"><a href="psm.pylons.controller.unittest.html#psm.pylons.controller.unittest.sample1">3.4.2. 测试示例一</a></span></dt>
<dt><span class="sect3"><a href="psm.pylons.controller.unittest.html#psm.pylons.controller.unittest.sample2">3.4.3. 测试示例二</a></span></dt>
</dl></dd>
<dt><span class="sect2"><a href="psm.pylons.controller.others.html">3.5. 实现其他的控制器</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="psm.security.html">4. pySvnManager 本身的认证和授权</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="psm.security.initial.html">4.1. 为 BaseController 增加 __before__ 方法</a></span></dt>
<dt><span class="sect2"><a href="psm.security.enable.html">4.2. 为控制器中增加授权</a></span></dt>
<dt><span class="sect2"><a href="psm.security.controller.html">4.3. Security 控制器实现</a></span></dt>
<dt><span class="sect2"><a href="psm.security.authz.html">4.4. pySvnManager 授权</a></span></dt>
<dt><span class="sect2"><a href="psm.security.unittest.html">4.5. 添加认证后的单元测试</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="psm.pylons.config.html">5. 配置文件</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="psm.pylons.config.inifile.html">5.1. Pylons的ini配置文件</a></span></dt>
<dt><span class="sect2"><a href="psm.pylons.config.localconfig.html">5.2. localconfig.py</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="psm.i18n.html">6. 国际化</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="psm.i18n.gettext.html">6.1. 使用_()改写字符串输出</a></span></dt>
<dt><span class="sect2"><a href="psm.i18n.default.html">6.2. 根据浏览器喜好自动选择缺省语种</a></span></dt>
<dt><span class="sect2"><a href="psm.i18n.translate.html">6.3. 本地化翻译</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="psm.pkg.html">7. 软件集成</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="psm.pkg.template.html">7.1. 设置 INI 文件模板</a></span></dt>
<dt><span class="sect2"><a href="psm.pkg.setup.html">7.2. 应用部署的定制</a></span></dt>
<dt><span class="sect2"><a href="psm.pkg.meta.html">7.3. 编辑版本号等信息</a></span></dt>
<dt><span class="sect2"><a href="psm.pkg.compile.html">7.4. 编译</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="psm.opensource.html">8. 开源项目提交</a></span></dt>
<dt><span class="appendix"><a href="psm.reference.html">A. 参考资料</a></span></dt>
</dl>
</div>
</div>
<table class="copyright" border="0" cellpadding="0" cellspacing="0" width="100%">
<col width="33%">
<col width="33%">
<col width="33%">
<tr>
<td></td>
<td align="center" valign="center"></td>
<td align="right" valign="center"><p class="copyright">
Copyright © 2006 <a href="http://www.worldhello.net/doc/"><b>WorldHello 开放文档之源</b> 计划</a></p></td>
</tr>
</table>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"> </td>
<td width="20%" align="center"> </td>
<td width="40%" align="right"> <a accesskey="n" href="psm.preface.html"><img src="/docbook/includes/images/docbook/next.png" alt="下一页"></a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top"> </td>
<td width="20%" align="center"> </td>
<td width="40%" align="right" valign="top"> 1. 前言</td>
</tr>
</table>
</div>
<script language="javascript" type="text/javascript" src="/docbook/includes/js/footer.js"></script><script language="javascript"> write_footer("/docbook"); </script>
</body>
</html>