6. Python脚本学习实战笔记六 使用CGI远程编辑
来源:互联网 发布:淘宝客领取内部优惠券 编辑:程序博客网 时间:2024/05/20 18:41
6. Python脚本学习实战笔记六 使用CGI远程编辑
本篇名言:“茶_苦而后甘,令人回味;酒_绵而后劲,叫人道爽;泉_清而味淡,却用一生来品出甜。一个知音,如茶如酒如泉,让人受益一生。”
1. 需求
通过网络在其他机器上对其进行修改,这样可以养数个协同作者一起修改共享文档,不用担心同步问题。(PS:这类远程编辑功能是WIKI系统的核心机制之一)。
2. 工具及准备
使用Python 的CGI模块,以及调试用的cgitb模块。
3. 初次实现
l 默认使用数据文件的值获取CGI的text参数
l 将文本保存到数据文件中
l 打印表单,将文本显示在文本域中
simple_edit.cgi文件如下:
#!D:\python27\python.exe
importcgi
form = cgi.FieldStorage()
text = form.getvalue('text', open('simple_edit.dat').read())
f = open('simple_edit.dat','w')
f.write(text)
f.close()
print"""Content-type: text/html
<html>
<head>
<title>A Simple Editor</title>
</head>
<body>
<form action='simple_edit.cgi'method='POST'>
<textarea rows='10'cols='20'name='text'>%s</textarea><br />
<input type='submit' />
</form>
</body>
</html>
""" % text
simple_edit.dat文件:
随意输入一些即可。
然后将simple_edit.cgi文件和simple_edit.dat文件放入到httpd服务的cgi-bin目录下(具体可以参看,蛤蟆之前的CGI脚本笔记)
http://127.0.0.1/cgi-bin/simple_edit.cgi
出现如下:输入提交后,内容会保存到simple_edit.dat文件中。
图1
4. 重构
将CGI脚本拆分为3个:一个带有能输入文件名的表单的网页index.html,在文本域中显示给定文件的脚本edit.cgi,保存收到的文本到给定文件的脚本save.cgi。
4.1 创建文件表单
Index.html 是HTML文件,用于输入文件名的表单。在文本框中输入文件名,点击打开按钮就可以运行edit.cgi.
4.2 创建编辑器脚本
Edit.cgi显示网页,还有一个用于输入密码的文本框。
脚本如下:
#!D:\python27\python.exe
print'Content-type: text/html\n'
fromos.pathimport join, abspath
importcgi, sys
BASE_DIR = abspath('data')
form = cgi.FieldStorage()
filename = form.getvalue('filename')
ifnot filename:
print'Please enter a file name'
sys.exit()
text = open(join(BASE_DIR,filename)).read()
print"""
<html>
<head>
<title>Editing...</title>
</head>
<body>
<form action='save.cgi'method='POST'>
<b>File:</b> %s<br />
<input type='hidden' value='%s'name='filename' />
<b>Password:</b><br />
<input name='password' type='password'/><br />
<b>Text:</b><br />
<textarea name='text'cols='40'rows='20'>%s</textarea><br />
<input type='submit' value='Save'/>
</form>
</body>
</html>
""" % (filename, filename, text)
Abspath函数被用于获取data目录的绝对路径,文件名保存在hidden表单元素中。会被传递到下一个脚本save.cgi中。
4.3 编写保存脚本
接受一个文件名、一个密码和一些文本,并且检查密码是是否正确。
实现如下:
#!D:\python27\python.exe
print'Content-type: text/html\n'
fromos.pathimport join, abspath
importcgi, sha, sys
BASE_DIR = abspath('data')
form = cgi.FieldStorage()
text = form.getvalue('text')
filename = form.getvalue('filename')
password = form.getvalue('password')
ifnot (filenameand textand password):
print'Invalid parameters.'
sys.exit()
ifsha.sha(password).hexdigest() !='8843d7f92416211de9ebb963ff4ce28125932878':
print'Invalid password'
sys.exit()
f = open(join(BASE_DIR,filename),'w')
f.write(text)
f.close()
print'The file has been saved.'
密码处理可以使用SHA模块,SecureHash Algorithm 安全哈希算法。
使用sha用法如下:
>>> from sha import sha
>>> sha('foobar').hexdigest()
'8843d7f92416211de9ebb963ff4ce28125932878'
>>> sha('foobar').hexdigest()
'8843d7f92416211de9ebb963ff4ce28125932878'
>>> sha('foobaz').hexdigest()
'21eb6533733a5e4763acacd1d45a60c2e0e404e1'
5. 交付
将edit.cgi,save.cgi放入到cgi-bin文件夹中。
将index.html翻入到htdocs文件夹中。
在cgi-bin文件夹中创建data文件。
将simple_edit.dat放入到data文件夹中。
然后在浏览器中输入 127.0.0.1 即可调出index.html。
如下图2:
输入data中的文件simple_edit.dat然后点击open,出现如下图3:
密码是foobar,然后修改后点击save,出现
The file hasbenn saved.
只有正确输入密码才能进行修改,不然save.cgi会提示 参数错误。
- 6. Python脚本学习实战笔记六 使用CGI远程编辑
- python项目练习六:使用CGI进行远程编辑
- python项目练习六:使用CGI进行远程编辑
- python基础教程项目六:使用CGI进行远程编辑
- Python项目六: 使用CGI进行远程编辑
- python项目练习六:使用CGI进行远程编辑
- python 使用CGI进行远程编辑1
- python 使用CGI进行远程编辑2
- 6. Python脚本学习笔记六字符串
- 使用CGI进行远程编辑
- 25. Python脚本学习笔记二十五 CGI脚本
- 远程编辑cgi
- 8. Python脚本学习实战笔记八 使用XML-RPC进行文件共享
- 如何创建和使用Python CGI脚本
- Selenium2 Python 自动化测试实战学习笔记(六)
- 学习CGI脚本 (脚本)
- 1.Python脚本学习实战笔记一 即时标记
- 3. Python脚本学习实战笔记三 主流的XML
- 2017双11全网销售额达2539.7亿;苹果承认iPhone X在寒冷天气下触摸失灵丨价值早报
- 5. Python脚本学习实战笔记五 茶话会
- 双十一大战,会是电商行业的最后一支“兴奋剂”
- 抖音收购musical.ly后,最难过的为什么是快手?
- JSP语法
- 6. Python脚本学习实战笔记六 使用CGI远程编辑
- 深入浅出MyBatis-Sqlsession
- Intent界面跳转,数据传递 初级
- HBase之HFile索引机制
- 7. Python脚本学习实战笔记七 电子公告板
- 利用mapreduce计算框架向hbase插入数据(python脚本)
- HDU 1282 回文数猜想
- 基于ARM_contexA9 led驱动编程
- 8. Python脚本学习实战笔记八 使用XML-RPC进行文件共享