利用cgi 实现简易网页加法计算器功能

5 篇文章 0 订阅

1. 前言

最近在看python web 开发的一些内容, 正好看到了cgi, 这里做一些记录

2. cgi 介绍

全名是通用网关接口, 他可以由很多语言来实现, 只要这个语言可以进行基本的输入输出即可。 个人感觉是, 只需要这个语言可以输出 html 语言, 就可以用来编写 cgi。
cgi 的基本处理流程 [1]

⑴通过Internet把用户请求送到web服务器。
⑵web服务器接收用户请求并交给CGI程序处理。
⑶CGI程序把处理结果传送给web服务器。
⑷web服务器把结果送回到用户。

3. 一些注意事项

  1. 创建一个 main.py 文件, 同时创建一个 样式模板, 其中封装了各种html 标签
  2. 启动 CGI
    • cmd 中输入: python CGIHTTPServer 8881
      这里写图片描述
  3. cgi 程序 一定需要放在 cgi-bin 文件夹中, 其他文件夹中将无法正常解析

4. 实现效果

这里写图片描述

5. 实现代码

main.py

# !/usr/bin env python
from style import *

import cgi, cgitb

form1 = cgi.FieldStorage()
num1 = form1.getvalue("left")
num2 = form1.getvalue("right")
num3 = None

if not num1 is None and not num2 is None:
    num3 = int(num1) + int(num2)

print start_response()
print start_div()
print img("../img/yurisa.jpg", "400px")
print end_div()

print start_div()
print start_form("", "GET")
print input_label("left", "left")
print "+"
print input_label("right", "right")
print "="
if num3 is None:
    print input_label("result", "result", '', "readonly")
else:
    print input_label("result", "result", str(num3),"readonly")
print end_form()
print end_div()

style.py

# def functions used in cgi files
def start_response(resp = "text/html"):
    return "Content-type:" + resp + "\n\n"

def img(src, height = "40px"):
    return "<img src = '" + src + "' height =" + height + ">"

def start_div(align = "center", style = "margin-top:50px"):
    return "<div align = '" + align + "'style = '" + style + "' >"

def end_div():
    return "</div>"

def input_label(name, placeholder="", value="", readonly=None):
    if readonly is None:
        return "<input type = 'text' value = '" + value + "' name = '" + name + "' placeholder = '" + placeholder + "'>"
    else:
        return "<input type = 'text' value = '" + value + "' readonly = '" + readonly + "' name = '" + name + "' placeholder = '" + placeholder + "'>"

def start_form(url = "", form_type = "POST"):
    return "<form action='" + url + "' method = '" + form_type + "'>"

def end_form(submit_msg = "submit"):
    return "<input type = 'submit' value = '" + submit_msg + "'>"

6. reference

[1] CGI (通用网关接口)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值