从 Python 快速启动 CGI 服务器
很多人知道 Python 3 可以快速启动一个 HTTP 服务器:
$ python3 -m http.server 8000
今天我查阅 http.server
模块发现它支持运行 CGI 脚本,只要加上 --cgi
选项。
入门 Web 后端的初学者一定是要学习 CGI 的(不管是学历史还是学概念都有好处),而配置 Apache / NGINX 环境对他们来说可能比较困难。我发现用 Python 这种自带的基础服务器既方便又简单。
例子
我们来写一个 Hello World 的 Python CGI 程序 hello.py
放在 cgi-bin/
里:
#!/usr/bin/python3
print('Content-type: text/html')
print()
print('Hello world!')
再写一个前端网页 index.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Hello Test</title>
</head>
<body>
<form action="/cgi-bin/hello.py" method="post">
<button type="submit">Hello</button>
</form>
</body>
</html>
整个目录结构为:
cgi-bin/
hello.py
index.html
然后将 CGI 脚本赋予运行权限:
$ chmod a+x cgi-bin/hello.py
运行测试
运行
$ python3 -m http.server --cgi 8000
浏览器访问 http://127.0.0.1:8000/
:
点击按钮:
(本文完)
从 Python 快速启动 CGI 服务器的更多相关文章
- 用python快速搭建WEB服务器
cmd下进入你要搞WEB项目的目录 输入↓方代码 python -m SimpleHTTPServer 端口号# 默认是8000 这样就启动了一个简单的WEB服务器
- 使用python快速搭建web服务器
命令:python -m SimpleHTTPServer 8088 参考:https://www.cnblogs.com/harry-xiaojun/p/6739003.html https://w ...
- Python快速搭建HTTP服务器
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style=&q ...
- python 快速启动http监听服务
python3 [root@vm10-20-9-45 ~]# python3 -m http.server 2378 Serving HTTP on 0.0.0.0 port 2378 (http:/ ...
- 用 Python 快速实现 HTTP 和 FTP 服务器
用 Python 快速实现 HTTP 服务器 有时你需临时搭建一个简单的 Web Server,但你又不想去安装 Apache.Nginx 等这类功能较复杂的 HTTP 服务程序时.这时可以使用 ...
- python web编程-CGI帮助web服务器处理客户端编程
这几篇博客均来自python核心编程 如果你有任何疑问,欢迎联系我或者仔细查看这本书的地20章 另外推荐下这本书,希望对学习python的同学有所帮助 概念预热 eb客户端通过url请求web服务器里 ...
- python paramiko ssh.exec_command()启动tomcat服务器应用进程失败问题解决方法- Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this progr
问题说明:
- python快速教程-vamei
2016年10月26日 12:00:53 今天开始着手python的学习,希望能高效快速的学完! Python基础(上)... 7 实验简介... 7 一.实验说明... 8 1. 环境登录... 8 ...
- python实现基于CGI的Web应用
python实现基于CGI的Web应用 本文用一个“网上书店”的web应用示例,简要介绍如何用Python实现基于CGI标准的Web应用,介绍python的cgi模块.cigtb模块对编写CGI脚本提 ...
随机推荐
- (六)QDialog,QMessageBox,QFileDialog,QColorDialog颜色,QFontDialog字体
QDialog 对话框: 1.模态对话框: QDialog dlg(this); // 显示模态对话框 exec ,后面的不可操作 dlg.exec(); // 阻塞 2.非模态对话框: QDialo ...
- 【转】BTree,B-Tree,B+Tree,B*Tree
B树: 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: ...
- 【sql server】“因为数据库正在使用,所以无法获得对数据库的独占访问权” 解决方案汇总
#事故现场: 在尝试还原数据库时,出现如下错误: #方案一:设置数据库在单用户模式下工作: 1.数据库上右键“属性”: 2.“选项”->“限制访问”,选择“SINGLE_USER” 3.还原数据 ...
- mockplus 原型设计工具
国产原型工具 http://www.mockplus.cn, 该工具功能很棒. 每次打开软件都需先登陆, 好在项目文件是可以保存到本地, 可以注册为免费版/个人版/团队版/企业版. 我是免费账号, 功 ...
- Linux动态链接库的生成和使用
目录 1. 编写C程序 2. 编译动态链接库 3. 使用共享库 4. 执行程序 5. 参考资料 1. 编写C程序 比如编写myfunc.c文件,里面包含两个函数,一个是say_hello,另一个是ca ...
- 散列(C++实现)
散列的构成:散列函数,散列表的存储方式,散列表的冲突解决方法. 1.散列函数 较常用的散列函数有除留余数法,数字分析法,平方取中法,折叠法. 2.散列表的存储方式 闭散列法(开地址法),用数组存储:开 ...
- spring基于XML的声明式事务控制
<?xml version="1.0" encoding="utf-8" ?><beans xmlns="http://www.sp ...
- springboot整合springdata-jpa
1.简介 SpringData : Spring 的一个子项目.用于简化数据库访问,支持NoSQL 和 关系数据存储.其主要目标是使数据库的访问变得方便快捷. SpringData 项目所支持 No ...
- conda和pip相关操作
1.conda创建.删除.激活和退出环境 创建:conda create -n [name] python=[version] 删除:conda remove -n [name] --all 激活:s ...
- LeetCode第二十一题-对两个有序链表排序
Merge Two Sorted Lists 问题简介:合并两个已排序的链表并将其作为新链表返回 举例: 输入: 1->3->5, 1->2->4 输出: 1->1-&g ...