zoukankan      html  css  js  c++  java
  • python web 框架的基本逻辑练习题

     1 # -*- coding:utf-8 -*-
     2 
     3 # date : 2017/12/22
     4 from wsgiref.simple_server import make_server
     5 # 首先是导入wsgi服务器里的make_server模块
     6 def routers():
     7     urlpatterns = (
     8         ("/book",func1),
     9         ("/web",func2),
    10         ("/main",func3),
    11     )
    12     return urlpatterns
    13 # 用函数来封装一个元祖(用字典也行),里面写的是一组组匹配的path 和 执行函数 也就是要返回给html的内容
    14 def func1(environ):
    15     return [b"<h1>hello,book</h1>"]
    16 def func2(environ):
    17     return [b"<h1>hello,web</h1>"]
    18 def func3(environ):
    19     return [b"<h1>hello,main</h1>"]
    20 # 3个返回函数里对应return的内容
    21 
    22 def application(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 = None
    34     #先申明一个变量fun为None
    35     for i in urlpatterns:
    36         if i[0] == path:
    37             fun = i[1]
    38             break
    39     # 遍历我们数据里的后缀i[0]是否有和浏览器请求的数据后缀environ["PATH_INFO"]相同的,如果有把i[1]的函数名传给刚才声明的fun(也是为了把for循环里的数据i[1]转成函数内的全局变量,提高作用域)
    40     if fun:
    41         return fun(environ)
    42     else:
    43         return [b"<h1>404!对不起找不到你想要的内容,请输入正确网址!</h1>"]
    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 就有页面显示出来
  • 相关阅读:
    SpringMVC之使用ResponseEntity
    紧随时代的步伐--Java8特性之接口默认方法
    Executor多线程框架
    Jsoup入门
    Echart、Excel、highcharts、jfreechart对比
    JFreeChart入门
    Spring定时任务(@Scheduled)
    Java正则表达式入门基础篇
    Vue.js之入门
    springboot rabbitmq direct exchange和topic exchange 写法上关于路由键的区别
  • 原文地址:https://www.cnblogs.com/laoguiaabb/p/8085602.html
Copyright © 2011-2022 走看看