很多人知道 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 服务器的更多相关文章

  1. 用python快速搭建WEB服务器

    cmd下进入你要搞WEB项目的目录 输入↓方代码 python -m SimpleHTTPServer 端口号# 默认是8000 这样就启动了一个简单的WEB服务器

  2. 使用python快速搭建web服务器

    命令:python -m SimpleHTTPServer 8088 参考:https://www.cnblogs.com/harry-xiaojun/p/6739003.html https://w ...

  3. Python快速搭建HTTP服务器

        <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style=&q ...

  4. python 快速启动http监听服务

    python3 [root@vm10-20-9-45 ~]# python3 -m http.server 2378 Serving HTTP on 0.0.0.0 port 2378 (http:/ ...

  5. 用 Python 快速实现 HTTP 和 FTP 服务器

      用 Python 快速实现 HTTP 服务器 有时你需临时搭建一个简单的 Web Server,但你又不想去安装 Apache.Nginx 等这类功能较复杂的 HTTP 服务程序时.这时可以使用  ...

  6. python web编程-CGI帮助web服务器处理客户端编程

    这几篇博客均来自python核心编程 如果你有任何疑问,欢迎联系我或者仔细查看这本书的地20章 另外推荐下这本书,希望对学习python的同学有所帮助 概念预热 eb客户端通过url请求web服务器里 ...

  7. 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

    问题说明:

  8. python快速教程-vamei

    2016年10月26日 12:00:53 今天开始着手python的学习,希望能高效快速的学完! Python基础(上)... 7 实验简介... 7 一.实验说明... 8 1. 环境登录... 8 ...

  9. python实现基于CGI的Web应用

    python实现基于CGI的Web应用 本文用一个“网上书店”的web应用示例,简要介绍如何用Python实现基于CGI标准的Web应用,介绍python的cgi模块.cigtb模块对编写CGI脚本提 ...

随机推荐

  1. (六)QDialog,QMessageBox,QFileDialog,QColorDialog颜色,QFontDialog字体

    QDialog 对话框: 1.模态对话框: QDialog dlg(this); // 显示模态对话框 exec ,后面的不可操作 dlg.exec(); // 阻塞 2.非模态对话框: QDialo ...

  2. 【转】BTree,B-Tree,B+Tree,B*Tree

    B树: 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: ...

  3. 【sql server】“因为数据库正在使用,所以无法获得对数据库的独占访问权” 解决方案汇总

    #事故现场: 在尝试还原数据库时,出现如下错误: #方案一:设置数据库在单用户模式下工作: 1.数据库上右键“属性”: 2.“选项”->“限制访问”,选择“SINGLE_USER” 3.还原数据 ...

  4. mockplus 原型设计工具

    国产原型工具 http://www.mockplus.cn, 该工具功能很棒. 每次打开软件都需先登陆, 好在项目文件是可以保存到本地, 可以注册为免费版/个人版/团队版/企业版. 我是免费账号, 功 ...

  5. Linux动态链接库的生成和使用

    目录 1. 编写C程序 2. 编译动态链接库 3. 使用共享库 4. 执行程序 5. 参考资料 1. 编写C程序 比如编写myfunc.c文件,里面包含两个函数,一个是say_hello,另一个是ca ...

  6. 散列(C++实现)

    散列的构成:散列函数,散列表的存储方式,散列表的冲突解决方法. 1.散列函数 较常用的散列函数有除留余数法,数字分析法,平方取中法,折叠法. 2.散列表的存储方式 闭散列法(开地址法),用数组存储:开 ...

  7. spring基于XML的声明式事务控制

    <?xml version="1.0" encoding="utf-8" ?><beans xmlns="http://www.sp ...

  8. springboot整合springdata-jpa

    1.简介  SpringData : Spring 的一个子项目.用于简化数据库访问,支持NoSQL 和 关系数据存储.其主要目标是使数据库的访问变得方便快捷. SpringData 项目所支持 No ...

  9. conda和pip相关操作

    1.conda创建.删除.激活和退出环境 创建:conda create -n [name] python=[version] 删除:conda remove -n [name] --all 激活:s ...

  10. LeetCode第二十一题-对两个有序链表排序

    Merge Two Sorted Lists 问题简介:合并两个已排序的链表并将其作为新链表返回 举例: 输入: 1->3->5, 1->2->4 输出: 1->1-&g ...