笨办法学Python

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

2016-07-24  本文已影响208人  大猫黄

从浏览器中获取输入

web原理

web流

从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')

上一篇下一篇

猜你喜欢

热点阅读