pythonweb设计教程课后答案_python web 框架的基本逻辑练习题

1 #-*- coding:utf-8 -*-

2

3 #date : 2017/12/22

4 from wsgiref.simple_server importmake_server5 #首先是导入wsgi服务器里的make_server模块

6 defrouters():7 urlpatterns =(8 ("/book",func1),9 ("/web",func2),10 ("/main",func3),11 )12 returnurlpatterns13 #用函数来封装一个元祖(用字典也行),里面写的是一组组匹配的path 和 执行函数 也就是要返回给html的内容

14 deffunc1(environ):15 return [b"

hello,book

"]16 deffunc2(environ):17 return [b"

hello,web

"]18 deffunc3(environ):19 return [b"

hello,main

"]20 #3个返回函数里对应return的内容

21

22 defapplication(environ,start_response):23 #application这里是固定参数传递environ,start_response,虽然是形参,但是必须要这么写,这个application方法自己调用是没有任何效果的

24 #environ是监听启动后传给服务端的请求包,有请求头和请求体等数据以字符串的形式发来,由服务端模块解析成一个个键值对

25 print(environ["PATH_INFO"])26 #["PATH_INFO"]是environ 请求数据里的请求地址url后缀,比如淘宝网是www.taobao.com 我们想访问他页面里的聚划算,点击后浏览器的url会由www.taobao.com变成www,taobao.com/********, 而/*******就是environ["PATH_INFO"

27 path = environ["PATH_INFO"]28 #把后缀赋给一个变量path

29 start_response("200 ok",[("Content-Type","text/html")])30 #这里是给返回头里加入返回状态"200 ok"和返回格式[("Content-Type","text/html")],告诉他我们返回的是一个html文档

31 urlpatterns=routers()32 #把存入元祖地址数据的函数实例化 赋给一个变量

33 fun =None34 #先申明一个变量fun为None

35 for i inurlpatterns:36 if i[0] ==path:37 fun = i[1]38 break

39 #遍历我们数据里的后缀i[0]是否有和浏览器请求的数据后缀environ["PATH_INFO"]相同的,如果有把i[1]的函数名传给刚才声明的fun(也是为了把for循环里的数据i[1]转成函数内的全局变量,提高作用域)

40 iffun:41 returnfun(environ)42 else:43 return [b"

404!对不起找不到你想要的内容,请输入正确网址!

"]44 #如果有匹配的数据.则返回对应函数fun(),注意我们为什么必须要传个参数environ,本例里也没有用到这个参数,是因为这是一种规范的格式,environ里是对面发送请求里的数据,里面包含很多有用的信息,可以在fun()里提取判读

45 httpd = make_server("127.0.0.1",8088,application)46

47 #这里也是一种固定写法make_server后面传的3个参数分别是服务端ip地址,服务端口号,application就是整个处理信息接受的方法(请求-返回)

48 print('Serving HTTP on port 8088...')49 httpd.serve_forever()50 #开启监听服务端 这时候我们用浏览器访问127.0.0.1:8088/book 或者 127.0.0.1:8088/web 就有页面显示出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值