zoukankan      html  css  js  c++  java
  • 实现方式

    flask 装饰器工厂模式:

    import time, pymysql
    
    # ----------------------------------------------方式1:flask 装饰器工厂模式------------------------------------------------>
    # 路由列表  路径  函数引用  flask框架添加路由
    route_list = []
    
    
    def route(url):
        """装饰器工厂:接收url参数,产生装饰器"""
    
        def wrapper(func):
            # 将获取到的路径信息 函数引用添加到路由列表
            route_list.append((url, func))
    
            def inner():
                pass
    
            return inner
    
        return wrapper
    
    
    @route('/gettime.html')
    def gettime():
        return '200 OK', [('Server', 'PWS9.0')], time.ctime()
    
    
    @route('/index.html')
    def index():
        """当用户请求/index.html"""
        # 1.读取模板文件
        with open('template/index.html', 'rb') as file:
            html_data = file.read().decode()
        # 2.连接数据库,取出数据
        conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='password', db='py_test', charset='utf8')
        cur = conn.cursor()
        sql = "select * from info;"
        cur.execute(sql)
        data = ""
        # data = str(cur.fetchall())
        for line in cur.fetchall():
            data += """
            <tr>
    
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td><input type="button" value="添加" id="toAdd" name="toAdd" systemidvaule="000007"></td>
    
            </tr>
    
            """ % line
    
        # 3.模拟模板替换 {%content%} --> 用户需要的数据
        html_data = html_data.replace('{%content%}', data)
        return '200 OK', [('Server', 'PWS9.0')], html_data
    
    
    @route('/center.html')
    def center():
        """当用户请求/index.html"""
        # 1.读取模板文件
        with open('template/center.html', 'rb') as file:
            html_data = file.read().decode()
            # 2.连接数据库,取出数据
            conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='password', db='py_test',
                                   charset='utf8')
            cur = conn.cursor()
            sql = "select info.code," 
                  "info.short," 
                  "info.chg," 
                  "info.turnover," 
                  "info.price," 
                  "info.highs," 
                  "focus.note_info " 
                  "from info join focus " 
                  "on info.id=focus.info_id;"
            cur.execute(sql)
            data = ""
            # data = str(cur.fetchall())
            for line in cur.fetchall():
                data += """
                <tr>
    
                <td>%s</td>
                <td>%s</td>
                <td>%s</td>
                <td>%s</td>
                <td>%s</td>
                <td>%s</td>
                <td>%s</td>
                <td><a type="button" class="btn btn-default btn-xs" href="/update/000007.html"> <span class="glyphicon glyphicon-star" aria-hidden="true"></span> 修改 </a></td>
                <td> <input type="button" value="删除" id="toDel" name="toDel" systemidvaule="000007"></td>
    
                </tr>
    
                """ % line
    
        # 3.模拟模板替换 {%content%} --> 用户需要的数据
        html_data = html_data.replace('{%content%}', data)
        return '200 OK', [('Server', 'PWS9.0')], html_data
    
    
    
    
    def app(env):
        """框架提供的函数 web服务器调用这个函数就可以运行"""
        # 当web服务器接收到动态资源请求的时候,web服务器需要调用当前这个
        # .html结尾的,就是动态资源
        print('收到来自web服务器的请求数据%s' % str(env))  # 就是用户在浏览器里面输入的地址<路径信息>,比如:127.0.0.1:8080/index.html
        path_info = env['PATH_INFO']
    
        if env['PATH_INFO'] == '/gettime.html':
            return gettime()
        elif path_info == '/index.html':
            return index()
    
        # 遍历路由列表  如果路径匹配,就执行相应的函数
        for url, func in route_list:
            if url == path_info:
                return func()  # 找到路径,就执行路径对应的函数功能
        else:  # 如果遍历完没找到,就最后一次性返回404信息
            # 返回值 状态 响应头 响应体
            return '404 Not Found', [('Server', 'PWS9.0')], 'response body:not found'
    
    
    """
    1.web服务器怎么样将请求数据给框架:解析成一个字典传参数
    2.框架怎么样将响应数据给 web 服务器的
    3.app是用来干嘛的:框架提供给服务器使用的,处理动态资源,结果通过函数返回值返回
    用户请求信息通过参数传进去
    
    模板:一套空文件,装数据的
    所有的框架都支持模板
    好处:一个就可以装好多数据
    """
    # ----------------------------------------路由:------------------------------------->
    """
    路由:if...else...写多了就废了
    提前把所有的路径以及路径对应的函数以元组的形式 全部 都存到一个列表中
    [(),(),()]这种形式
    可以保证顺序,字典是无序的
    正则表达式等下要匹配
    路由列表中存的是路径和函数
    
    
    视图函数:index,center
    
    
    股票信息的格式:
    <tr>
        
    </tr>
    
    一对tr标签控制的是一行数据的显示
    一对td标签控制的是一个字段数据的显示
    
    select info.code,
    info.short,
    info.chg,
    info.turnover,
    info.price,
    info.highs,
    focus.note_info 
    from info join focus on info.id=focus.info_id;
    
    """
    # 模板变量-->替换为 用户所需要的数据   {%content%} ---> 用户需要的数据

    django列表模式:

    # ------------------------------------------------方式2:django 列表模式------------------------------------------------>
    import time, pymysql
    
    
    def gettime():
        return '200 OK', [('Server', 'PWS9.0')], time.ctime()
    
    
    def index():
        """当用户请求/index.html"""
        # 1.读取模板文件
        with open('template/index.html', 'rb') as file:
            html_data = file.read().decode()
        # 2.连接数据库,取出数据
        conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='password', db='py_test', charset='utf8')
        cur = conn.cursor()
        sql = "select * from info;"
        cur.execute(sql)
        data = ""
        # data = str(cur.fetchall())
        for line in cur.fetchall():
            data += """
            <tr>
    
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td><input type="button" value="添加" id="toAdd" name="toAdd" systemidvaule="000007"></td>
    
            </tr>
    
            """ % line
    
        # 3.模拟模板替换 {%content%} --> 用户需要的数据
        html_data = html_data.replace('{%content%}', data)
        return '200 OK', [('Server', 'PWS9.0')], html_data
    
    
    def center():
        """当用户请求/index.html"""
        # 1.读取模板文件
        with open('template/center.html', 'rb') as file:
            html_data = file.read().decode()
            # 2.连接数据库,取出数据
            conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='password', db='py_test',
                                   charset='utf8')
            cur = conn.cursor()
            sql = "select info.code," 
                  "info.short," 
                  "info.chg," 
                  "info.turnover," 
                  "info.price," 
                  "info.highs," 
                  "focus.note_info " 
                  "from info join focus " 
                  "on info.id=focus.info_id;"
            cur.execute(sql)
            data = ""
            # data = str(cur.fetchall())
            for line in cur.fetchall():
                data += """
                <tr>
    
                <td>%s</td>
                <td>%s</td>
                <td>%s</td>
                <td>%s</td>
                <td>%s</td>
                <td>%s</td>
                <td>%s</td>
                <td><a type="button" class="btn btn-default btn-xs" href="/update/000007.html"> <span class="glyphicon glyphicon-star" aria-hidden="true"></span> 修改 </a></td>
                <td> <input type="button" value="删除" id="toDel" name="toDel" systemidvaule="000007"></td>
    
                </tr>
    
                """ % line
    
        # 3.模拟模板替换 {%content%} --> 用户需要的数据
        html_data = html_data.replace('{%content%}', data)
        return '200 OK', [('Server', 'PWS9.0')], html_data
    
    
    # -----------方式2:django---------------------->
    # 路由列表  路径  函数引用  django框架添加路由
    route_list = [
        ('/gettime.html', gettime),
        ('/index.html', index),
        ('/center.html', center),
    ]
    
    
    def app(env):
        """框架提供的函数 web服务器调用这个函数就可以运行"""
        # 当web服务器接收到动态资源请求的时候,web服务器需要调用当前这个
        # .html结尾的,就是动态资源
        print('收到来自web服务器的请求数据%s' % str(env))  # 就是用户在浏览器里面输入的地址<路径信息>,比如:127.0.0.1:8080/index.html
        path_info = env['PATH_INFO']
    
        # if env['PATH_INFO'] == '/gettime.html':
        #     return gettime()
        # elif path_info == '/index.html':
        #     return index()
    
        # 遍历路由列表  如果路径匹配,就执行相应的函数
        for url, func in route_list:
            if url == path_info:
                return func()  # 找到路径,就执行路径对应的函数功能
        else:  # 如果遍历完没找到,就最后一次性返回404信息
            # 返回值 状态 响应头 响应体
            return '404 Not Found', [('Server', 'PWS9.0')], 'response body:not found'
  • 相关阅读:
    cmp函数
    代码6
    代码5
    Google Code Jam在线測试题目--Alien Language
    Android ListView 和 ScrollView 冲突问题
    IOS的一个关于球碰撞的小游戏
    运用smali自己主动注入技术分析android应用程序行为
    《Pro Android Graphics》读书笔记之第二节
    单播、多播(组播)和广播的差别
    Swift闭包(Closure)
  • 原文地址:https://www.cnblogs.com/huaibin/p/12100991.html
Copyright © 2011-2022 走看看