美文网首页
Python CGI 实战一:简易加法计算器

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

作者: CHASK | 来源:发表于2019-11-13 12:01 被阅读0次

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

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

    最终效果

    • 要写的内容有count.py及count_model.py这两个文件:
    • 因为将html塞进print里代码会过于繁琐,所以尝试使用模板引擎,就是额外写一个类似组件的count_model.py文件,要使用的时候在count.py中调用就好


      image.png
    • 最终完成的效果,一个加法计算器:


      image.png

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

    • 在CGI-Executables中新建一个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

    • 在CGI-Executables中新建一个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())
    

    结束!

    相关文章

      网友评论

          本文标题:Python CGI 实战一:简易加法计算器

          本文链接:https://www.haomeiwen.com/subject/njrcictx.html