在pylons中的网页输入处理和ror类似,都是采用params['name'],而pylons只是一个myghty.reuqest_args的包装而已。比如一个文件上传的例子,首先在templates中建立testform.myt:
<%flags>
inherit = None
</%flags>
<table>
<form action="addfile" method="POST" enctype="multipart/form-data">
<tr> <td>File:</td>
<td><input type="file" name="file" size="30"></td>
</tr>
<tr><td colspan="3"><input type="submit" name="submit" value="Add file" /></td></tr>
</form>
</table>
然后在hello.py中加入:
def addfile(self):
field = params['file']
data = ''
while 1:
line = field.file.readline()
if line == '':
break
data += line
print data
m.write(params['file'].filename)
m.write(params['file'].value)
m.write(params['file'].type_options)
m.write(params['file'].headers)
params都可以用m.request_args来代替的。实际上params['file']是cgi.FieldStorage类,它的属性可以用来分析表单的内容和属性。通过params['file'].file文件字读取文件内容,它并不是存在于内存中,而是一个临时文件来暂放,调用params['file'].name可以看出来,读完文件内容后还可以保存到另外一个文件中。
