美文网首页笨办法学Python
《笨办法学Python》笔记38-----从浏览器中获取输入

《笨办法学Python》笔记38-----从浏览器中获取输入

作者: 大猫黄 | 来源:发表于2016-07-24 14:17 被阅读208次

    从浏览器中获取输入

    web原理

    web流
    • 在浏览器输入网址url(统一资源定位器),浏览器透过电脑的网卡发出请求A
    • 网卡将请求发送到互联网B到达服务器C
    • 服务器接收请求后,web应用程序处理请求,python代码运行index.GET
    • 代码return时,python服务器会发出响应,透过网络发送回请求的浏览器

    从url获取输入

    url:http://localhost:8080/hello?name=Frank

    这个地址中问号后面是参数和值,需要修改上节中的app.py才能解析这个地址中的?部分

    #app.py
    
    import web
    
    urls = ('/hello','Index')
    
    app = web.application(urls,globals())
    
    render = web.template.render('templates/')
    
    class Index(object):
        def GET(self):
            form = web.input(name="Nobody")
            greeting = "Hello ,%s"%form.name
            return render.index(greeting = greeting)
    
    if __name__ == '__main__':
        app.run()
    
    
    

    效果如图:

    url中带参数

    从表单获取输入

    从url中发送数据给服务器,毕竟不适合普通用户。

    所以,可以做一个网页表单给用户填写,然后提交给服务器。

    新建一个hello_form.html文件到templates目录下

    <html>
        <head>
            <title>Sample Web Form</title>
        </head>
    <body>
    <h1>Fill Out This Form</h1>
    <form action="/hello" method="POST">
        A Greeting: <input type="text" name="greet">
        <br/>
        Your Name: <input type="text" name="name">
        <br/>
        <input type="submit">
    </form>
    </body>
    </html>
    
    
    

    用浏览器单独打开这个文件,效果如下图:

    表单

    要获取表单的值,app.py也需要修改

    import web
    
    urls = ('/hello','Index')
    
    app = web.application(urls,globals())
    
    render = web.template.render('templates/')
    
    class Index(object):
    
        def GET(self):
            return render.hello_form()
    
        def POST(self):
            form = web.input(name="Nobody",greet= 'Hello')
            greeting = "%s,%s"%(form.greet,form.name)
            return render.index(greeting = greeting)
    
    if __name__ == '__main__':
        app.run()
    
    
    填写表单 服务器返回
    GET与POST

    get与post是客户端与服务器之间的两种常用交互方法

    HTTP 方法:GET 对比 POST

    布局模板

    一个网页分上中下左右等区域,有的网页的某个区域会固定显示某些内容,如logo,标题等,将这些固定的内容单独拿出来做成一个文件,当网页被请求时,用该文件包裹其他网页内容出现在客户端,这个文件就是布局模板。

    剥离index.html和hello_form.html的部分内容,并以templates/layout.html文件形式出现

    #index.html
    
    $def with (greeting)
    
    $if greeting:
        I just wanted to say <em style="color: green; font-size:2em;">$greeting</em>.
    $else:
        <em>Hello</em>, world!
    
    
    #hello_form.html
    
    <h1>Fill Out This Form</h1>
    <form action="/hello" method="POST">
        A Greeting: <input type="text" name="greet">
        <br/>
        Your Name: <input type="text" name="name">
        <br/>
        <input type="submit">
    </form>
    
    
    #layout.html
    
    $def with (content)
    <html>
      <head>
        <title>Gothons From Planet Percal #25</title>
      </head>
    <body>
      $:content
    </body>
    </html>
    
    

    要使模板调用生效,还需修改app.py中的render对象

    render = web.template.render('templates/',base='layout')

    相关文章

      网友评论

      • 王大可丶琦:你好,大猫。
        没想到你是四期的教练,自己决定报Python四期。
        习题不会了就上网搜,结果搜到了你。:blush:
        大猫黄:@王大可丶琦 哈哈,搜索技能不错哦,这么偏的角落都被你找到了 :watermelon:

      本文标题:《笨办法学Python》笔记38-----从浏览器中获取输入

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