Python CGI 实战一:简易加法计算器

2019-11-13  本文已影响0人  CHASK

小小吐槽,可直接跳过蛤:

  • 其实练习完基础代码后会发现,所谓CGI生成动态网页,其实就是把html代码塞进print('')里打印出来... 虽然是基于python可以直接进行数据库操作,但只能html->CGI->数据库单向传值,CGI生成的动态网页是可以传值,但CGI无法向html进行实时传值
  • 需要先写好html再塞进print里,无法向单个html文件传值,意味着要连接数据库得在CGI中写html... 那么我为什么不直接html+css+js+jsp呢!未免也太鸡肋了叭!!
  • 其实计算器也可以直接用html+css+js写!但是为了学习CGI...好了就不吐槽了,来写这个计算器吧!

最终效果

第一步:编写模板引擎 count_model.py

#头部
def start_response(resp="text/html"):
    return 'Content-type:'+resp+'\n\n'
#form
def start_form(the_url="",form_type="Post"):
    return '<form action="'+the_url+'"method="'+form_type+'">'

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

#input
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 context(word):
    return word

#div块
def start_div(align,style):
    return '<div align="'+align+'" style="'+style+'">'

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

#图片
def img(src):
    return '<img src="'+src+'">'

第二步:编写加法计算器 count.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-
#简易加法计算器
# CGI处理模块
import cgi, cgitb
#html代码量多,使用模板引擎
from count_model import *

# 创建 FieldStorage 的实例化
form = cgi.FieldStorage()

#设定num1 + num2 = num3
num1 = form.getvalue("Num1")
num2 = form.getvalue("Num2")
num3 = None

#判断输入是否为空
if not num1 is None and not num2 is None:
    num1 = int(num1)
    num2 = int(num2)
    num3 = num1 + num2

print(start_response())
print(start_div("center","margin-top:40px;"))
print(img("http://wx4.sinaimg.cn/large/7a876694gy1g8va7k3wskj207g07i0sx.jpg"))
print(end_div())

print(start_div("center","margin-top:60px;"))
print(start_form())
print(input_label("Num1","adder-1"))
print("+")
print(input_label("Num2","adder-2"))
print("=")
if num3 is None:
    print(input_label("Num3","result","","readonly"))
else:
    print(input_label("Num3","result",str(num3),"readonly"))
print(end_form())
print(end_div())

结束!

上一篇下一篇

猜你喜欢

热点阅读