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

从浏览器中获取输入

web原理

《笨办法学Python》笔记38-----从浏览器中获取输入_第1张图片
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()


效果如图:

《笨办法学Python》笔记38-----从浏览器中获取输入_第2张图片
url中带参数

从表单获取输入

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

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

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


    
        Sample Web Form
    

Fill Out This Form

A Greeting:
Your Name:

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

《笨办法学Python》笔记38-----从浏览器中获取输入_第3张图片
表单

要获取表单的值,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()

《笨办法学Python》笔记38-----从浏览器中获取输入_第4张图片
填写表单
《笨办法学Python》笔记38-----从浏览器中获取输入_第5张图片
服务器返回
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 $greeting.
$else:
    Hello, world!

#hello_form.html

Fill Out This Form

A Greeting:
Your Name:
#layout.html

$def with (content)

  
    Gothons From Planet Percal #25
  

  $:content



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

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

你可能感兴趣的:(《笨办法学Python》笔记38-----从浏览器中获取输入)