Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlearning-webpy.html
More file actions
207 lines (165 loc) · 12.1 KB
/
Copy pathlearning-webpy.html
File metadata and controls
207 lines (165 loc) · 12.1 KB
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
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
<!DOCTYPE html>
<html prefix="
og: http://ogp.me/ns#
article: http://ogp.me/ns/article#
" lang="zh_cn">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>learning web.py | Go for it</title>
<link href="../assets/css/all-nocdn.css" rel="stylesheet" type="text/css">
<link rel="alternate" type="application/rss+xml" title="RSS" href="../rss.xml">
<link rel="canonical" href="http://nicebug.github.io/posts/learning-webpy.html">
<!--[if lt IE 9]><script src="/assets/js/html5.js"></script><![endif]-->
<meta name="author" content="damonhu">
<meta property="og:site_name" content="Go for it">
<meta property="og:title" content="learning web.py">
<meta property="og:url" content="http://nicebug.github.io/posts/learning-webpy.html">
<meta property="og:description" content="web.py学习笔记
由于后台的几个需求,需要给测试同学构造gm指令以方便测试,思来想去还是搭建个快速的webserver来方便测试同学,django太庞大,tornado不大熟悉,别人介绍了下web.py,而且也不需要安装一大堆的第三方依赖库(原谅楼主有时候在服务器上不喜欢装第三方库的臭毛病吧),甚至把web.py打包后都不需要额外安装任何东西。简单看了下web.py的文档,感觉还是入手还是比较">
<meta property="og:type" content="article">
<meta property="article:published_time" content="2015-02-05T03:49:39+00:00">
<meta property="article:tag" content="web.py">
</head>
<body>
<section class="social">
<ul>
<li><a href="../index.html" title="Home"><i class="icon-home"></i></a></li>
<li><a href="../archive.html" title="Archives"><i class="icon-folder-open-alt"></i></a></li>
<li><a href="../categories/index.html" title="Tags"><i class="icon-tags"></i></a></li>
<li><a href="../rss.xml" title="RSS"><i class="icon-rss"></i></a></li>
<li><a href="#" title="About me"><i class="icon-user"></i></a></li>
<li><a href="#" title="My Twitter"><i class="icon-twitter"></i></a></li>
<li><a href="https://github.com/nicebug" title="My Github"><i class="icon-github"></i></a></li>
</ul>
</section>
<section class="page-content">
<div class="content" rel="main">
<div class="post">
<h1 class="p-name entry-title" itemprop="headline name">learning web.py</h1>
<div class="meta">
<div class="authordate">
<time class="timeago" datetime="2015-02-05T03:49:39+00:00">2015-02-05 03:49</time>
|
<a href="learning-webpy.md" id="sourcelink">源代码</a>
</div>
<div itemprop="keywords" class="tags">
<ul>
标签 :
<li><a class="tag p-category" href="../categories/webpy.html" rel="tag">web.py</a></li>
</ul>
</div>
</div>
<div class="body">
<div>
<h3>web.py学习笔记</h3>
<p>由于后台的几个需求,需要给测试同学构造gm指令以方便测试,思来想去还是搭建个快速的webserver来方便测试同学,django太庞大,tornado不大熟悉,别人介绍了下<a href="http://webpy.org/">web.py</a>,而且也不需要安装一大堆的第三方依赖库(原谅楼主有时候在服务器上不喜欢装第三方库的臭毛病吧),甚至把web.py打包后都不需要额外安装任何东西。简单看了下web.py的文档,感觉还是入手还是比较容易。</p>
<p>工程文档目录结构:</p>
<pre class="code literal-block">main
|---- conf (工程配置文件)
|---- static (js,图片等)
|---- template (html文件)
|---- web (web.py的库文件)
|---- config.py (目录,密码等配置)
|---- index.py (路由文件)
</pre>
<p>接着就可以开始coding,在web.py中需要指定url路由,当url请求中包含相应关键字时则跳转到相应的class中进行处理。</p>
<pre class="code literal-block"><span class="n">urls</span> <span class="o">=</span> <span class="p">(</span>
<span class="s">'/favicon.ico'</span><span class="p">,</span><span class="s">"Ico"</span><span class="p">,</span>
<span class="s">'/about'</span><span class="p">,</span> <span class="s">"About"</span><span class="p">,</span>
<span class="s">'/list_(.*)'</span><span class="p">,</span> <span class="s">"Script"</span><span class="p">,</span>
<span class="s">'/bin_upload(.*)'</span><span class="p">,</span> <span class="s">"Upload"</span><span class="p">,</span>
<span class="s">'/changetime(.*)'</span><span class="p">,</span> <span class="s">"ChangeTime"</span><span class="p">,</span>
<span class="s">'/(.*)'</span><span class="p">,</span><span class="s">'Index'</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">render</span> <span class="o">=</span> <span class="n">web</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="s">'template/'</span><span class="p">)</span>
</pre>
<p>以下以about跳转为例:</p>
<pre class="code literal-block"><span class="k">class</span> <span class="nc">Upload</span><span class="p">:</span>
<span class="k">def</span> <span class="nf">POST</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
<span class="c"># save a file to disk</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">web</span><span class="o">.</span><span class="n">input</span><span class="p">(</span><span class="nb">file</span><span class="o">=</span><span class="p">{})</span>
<span class="c">#print "bintag, filename:", x.bintag, x.file.filename</span>
<span class="k">if</span> <span class="n">x</span><span class="o">.</span><span class="n">bintag</span> <span class="o">==</span> <span class="s">""</span> <span class="ow">or</span> <span class="n">x</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">filename</span> <span class="o">==</span> <span class="s">""</span><span class="p">:</span>
<span class="k">return</span> <span class="s">"<script type=</span><span class="se">\"</span><span class="s">text/javascript</span><span class="se">\"</span><span class="s">>alert(</span><span class="se">\"</span><span class="s">参数输入不正确,请检查参数!</span><span class="se">\"</span><span class="s">); </span><span class="se">\</span>
<span class="s"> parent.location.href= parent.location.href;</script>"</span>
</pre>
<p><strong>list_resconv.html</strong></p>
<pre class="code literal-block"> <span class="nt"><form</span> <span class="na">id=</span><span class="s">"upload"</span> <span class="na">action=</span><span class="s">"bin_upload"</span> <span class="na">method=</span><span class="s">"POST"</span> <span class="na">enctype=</span><span class="s">"multipart/form-data"</span> <span class="na">target=</span><span class="s">"ifm"</span><span class="nt">></span>
<span class="nt"><fieldset></span>
<span class="nt"><legend></span>bin上传路径:<span class="nt"></legend></span>
<span class="nt"><div></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"form-group"</span><span class="nt">></span>
<span class="nt"><label</span> <span class="na">for=</span><span class="s">"tag"</span> <span class="na">class=</span><span class="s">"col-sm-2 control-label"</span><span class="nt">></span>bin档目录名:<span class="nt"></label></span>
<span class="nt"><input</span> <span class="na">type=</span><span class="s">"text"</span> <span class="na">id=</span><span class="s">"bintag"</span> <span class="na">name=</span><span class="s">"bintag"</span><span class="nt">></span>
<span class="nt"></div></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"form-group"</span><span class="nt">></span>
<span class="nt"><label</span> <span class="na">for=</span><span class="s">"name"</span> <span class="na">class=</span><span class="s">"col-sm-2 control-label"</span><span class="nt">></span>bin文件:<span class="nt"></label></span>
<span class="nt"><input</span> <span class="na">type=</span><span class="s">"file"</span> <span class="na">id=</span><span class="s">"fileselect"</span> <span class="na">name=</span><span class="s">"file"</span> <span class="na">title=</span><span class="s">"choose a file"</span> <span class="na">onchange=</span><span class="s">"this.form.submit();"</span><span class="nt">></span>
<span class="c"><!--<p class="help-block">要上传的bin文件.</p>--></span>
<span class="nt"></div></span>
<span class="c"><!--<div id="filedrag">or drop the file here</div>--></span>
<span class="nt"></div></span>
<span class="nt"></fieldset></span>
<span class="nt"></form></span>
</pre>
<p>当POST请求跳转到bin_upload时,则跳转到Upload进行相应的处理,Upload中处理接收的参数,进行后台逻辑处理。如果需要将处理后的数据返回前台,通常使用render来处理返回的数据<code>render.htmlfilename(parms)</code>的方式。</p>
</div>
</div>
<ul class="pager">
<li class="previous">
<a href="markdown-syntax.html" rel="prev" title="markdown syntax">前一篇</a>
</li>
</ul>
<div id="disqus_thread"></div>
<script>
var disqus_shortname ="nikolademo",
disqus_url="http://nicebug.github.io/posts/learning-webpy.html",
disqus_title="learning web.py",
disqus_identifier="cache\posts\learning-webpy.html",
disqus_config = function () {
this.language = "zh_cn";
};
(function() {
var dsq = document.createElement('script'); dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="//disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a>
</noscript>
<a href="//disqus.com" class="dsq-brlink" rel="nofollow">Comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
<footer id="footer" role="contentinfo">
<p>Contents © 2015 <a href="mailto:alldoisbug@gmail.com">damonhu</a> - Powered by <a href="http://getnikola.com" rel="nofollow">Nikola</a> </p>
</footer>
</div>
</section>
<script src="../assets/js/all-nocdn.js" type="text/javascript"></script>
<!-- Social buttons -->
<div id="addthisbox" class="addthis_toolbox addthis_peekaboo_style addthis_default_style addthis_label_style addthis_32x32_style">
<a class="addthis_button_more">Share</a>
<ul>
<li>
<a class="addthis_button_facebook"></a>
</li>
<li>
<a class="addthis_button_google_plusone_share"></a>
</li>
<li>
<a class="addthis_button_linkedin"></a>
</li>
<li>
<a class="addthis_button_twitter"></a>
</li>
</ul>
</div>
<script src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4f7088a56bb93798"></script>
<!-- End of social buttons -->
<script type="text/javascript">
$(function(){
$('.timeago').timeago();
});
</script>
</body>
</html>
You can’t perform that action at this time.
