zoukankan      html  css  js  c++  java
  • 调包侠

    调包侠

    wsgiref模块

    • 该模块实现了上面两个手动的过程
    • 根据功能不同拆分不同的py文件
    • urls.py 只放路由(后缀名)以及视图函数对应的关系
    • views.py 放视图函数(函数,类)
    • templates 模板文件夹(一堆html文件)
    • 拆分完成之后 如果想要添加功能,你仅仅只需要在上面两个地方动手脚就可以了

    知识盲区

    函数名只要加括号 立即执行 ,优先级最高,
    点开make_server 看源码 有返回值就定一个变量去接收

    make_server 里面有三个参数 第一个是ID,第三个是函数名
    作用分别主要为了实时监听该地址 只要有客户端来连接 统一交给run函数(env,response)去处理
    启动服务端server.server_forever()

    :param env: 请求相关的所有数据
    :param response: 响应相关的所有数据

    精髓:

    主要是思想,拆分

    先去导包

    from wsgiref.simple_server import make_server# 导包
    from urls import urls  # 后缀名和视图函数对象关系拆成一个文件夹
    from views import *
    
    
    
    
    def run(env,response):
        """
        :param env: 请求相关的所有数据
        :param response: 响应相关的所有数据
        :return:
        """
        response('200 OK',[])
        # print(env)
        current_path = env.get('PATH_INFO')
        # if current_path == '/index':
        #     # 很多业务逻辑代码
        #     return [b'index']
        # elif current_path == '/login':
        #     return [b'login']
        # else:
        #     return [b'404 error']
        # 先定义一个变量名 用来存储后续匹配到的函数名
        func = None
        # for循环 匹配后缀
        for url in urls:
            if current_path == url[0]:
                func = url[1]  # 一旦匹配成功 就将匹配到的函数名赋值给func变量
                break  # 主动结束匹配
        # 判断func是否有值  有可能一套降龙十八掌下来一个人也没打到
        if func:
            res = func(env)  # 执行匹配到的函数去请求
        else:
            res = error(env)
        return [res.encode('utf-8')]
    
    
    
    
    if __name__ == '__main__':
        server = make_server('127.0.0.1',8080,run)
        # 实时监听该地址  只要有客户端来连接 统一交给run函数去处理
        server.serve_forever()  # 启动服务端
    

    1571588892556

    1571544944057

    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <link href="https://cdn.bootcss.com/twitter-bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/twitter-bootstrap/3.3.1/js/bootstrap.min.js"></script>
    

    无状态 对应的是cookie,session,token 意思就是记住你的名字

    get请求

    ​ 没有请求体,也可以携带参数

    post请求筛选 是携带数据的 px是排序拼音也是可以的 gj get请求也可以携带一些参数

    ​ post请求 用户登录

    请求头 类似于开路先锋 提前告诉对方一些必要的信息,

    get请求没有请求体.
    wsgiref web服务网关接口 两点 .com 后面的指的是URL

    动静态网页

    静态网页

    • 数据是写死的,万年不变

    动态网页

    • 数据是实时获取的
      • 后端获取当前时间展示到前端
      • 后端获取数据库中的数据展示到前端

    疑问

    	如何将后端获取的数据 传递给html页面
    
    后端获取的数据 传递给html页面  >>>:  模板的渲染
    
    jinja2  
    pip3 install jinja2
    
    模板语法(极其贴近python后端语法)
    	<p>{{ user }}</p>
    	<p>{{ user.name }}</p>
    	<p>{{ user['pwd'] }}</p>
    	<p>{{ user.get('hobby') }}</p>
    

    	{% for user_dict in user_list %}
    		<tr>
    			<td>{{ user_dict.id }}</td>
    			<td>{{ user_dict.name }}</td>
    			<td>{{ user_dict.pwd }}</td>
    		</tr>
    	{% endfor %}
    
  • 相关阅读:
    判断一棵二叉树是否为二叉搜索树
    分离链接法的删除操作函数
    线性探测法的查找函数
    Bzoj1251 序列终结者
    POJ2396 Budget
    Bzoj3531: [Sdoi2014]旅行
    Codeforces Round #389 Div.2 E. Santa Claus and Tangerines
    Codeforces Round #389 Div.2 D. Santa Claus and a Palindrome
    Codeforces Round #389 Div.2 C. Santa Claus and Robot
    Codeforces Round #389 Div.2 B. Santa Claus and Keyboard Check
  • 原文地址:https://www.cnblogs.com/jhpy/p/11714699.html
Copyright © 2011-2022 走看看