• Python-S9——Day115-Flask Web框架


    01 当日内容概要

    1 当日内容概要

    1.1 Flask基础;

    1.2 Web框架包含的基础组件;

      1.2.1 路由、视图函数、模板渲染;

    1.3 Flask配置文件;

    1.4 Flask的路由系统;

    1.5 Flask视图函数;

    1.6 请求相关&响应相关;

    1.7 模板的渲染;

    1.8 session保持(不是所有的Web框架都提供session);

    1.9 闪现;

    1.10 中间件(与Django的区别很大);

    1.11 蓝图(blueprint);

    1.12 特殊的装饰器;

    2 内容回顾;

    2.1 Django和Flask的对比和认知;、

    2.2 Flask和Django之间的最大不同点;

      2.2.1 request/session

    2.3 Flask的知识点;

      2.3.1 静态文件+模板 app = Flask(__name__,...)

      2.3.2 路由 @app.route('/index',methods = ["GET"])

      2.3.3 视图函数

    请求:

    • request.form
    • request.args
    • request.method

    响应:

    • render
    • redirect

    session

    • session['xxx'] = 123
    • session.get('xx')

      2.3.4 路飞学城项目;

    • 管理后台;
    • 导师后台;
    • 主站;

      2.3.5 路飞学城主站的业务;

    • 课程
    1. 课程列表
    2. 课程详细
    3. 大纲、导师、推荐课程
    4. 价格策略
    5. 章节和课时
    6. 常见问题
    • 深科技
    1. 文章列表
    2. 文章详细
    3. 收藏
    4. 评论
    5. 点赞
    • 支付
    1. 购物车(4个函数)
    2. 结算中心(3个函数)
    3. 立即支付(1个函数)
    4. 知识点——Redis(持久化)、支付宝、消息推送(公众号推送模板消息)、构建数据结构
    • 个人中心
    • 课程中心

      2.3.6 播放视频

    • CC视频
    • 加密视频
    • 非加密视频

    3 Flask框架:配置文件导入原理

    3.1  如何找到这个类?

    知识点:
            - 给你一个路径 “settings.Foo”,可以找到类并获取去其中的大写的静态字段。
            
                settings.py
                    class Foo:
                        DEBUG = True
                        TEST = True
                    
                xx.py 
                    import importlib
    
                    path = "settings.Foo"
    
                    p,c = path.rsplit('.',maxsplit=1)
                    m = importlib.import_module(p)
                    cls = getattr(m,c)
    
                    # 如果找到这个类?
                    for key in dir(cls):
                        if key.isupper():
                            print(key,getattr(cls,key))

    4 Flask框架:配置文件使用;

    4.1 通过app.py进行引入,外部进行定义;

    4.2 查看app.config的内容;

    app.py

    from flask import Flask, render_template, request, redirect, session
    
    app = Flask(__name__)
    
    print(app.config)
    # app.config["DEBUG"] = True
    
    '''
    <Config {'ENV': 'development', 'DEBUG': False, 'TESTING': False, 'PROPAGATE_EXCEPTIONS': None, 'PRESERVE_CONTEXT_ON_EXCEPTION': None,
    'SECRET_KEY': None, 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(31), 'USE_X_SENDFILE': False, 'SERVER_NAME': None,
    'APPLICATION_ROOT': '/', 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_PATH': None, 
    'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_SECURE': False, 'SESSION_COOKIE_SAMESITE': None,
    'SESSION_REFRESH_EACH_REQUEST': True, 'MAX_CONTENT_LENGTH': None,
    'SEND_FILE_MAX_AGE_DEFAULT': datetime.timedelta(0, 43200), 'TRAP_BAD_REQUEST_ERRORS': None,
    'TRAP_HTTP_EXCEPTIONS': False, 'EXPLAIN_TEMPLATE_LOADING': False, 'PREFERRED_URL_SCHEME': 'http', 'JSON_AS_ASCII': True, 
    'JSON_SORT_KEYS': True, 'JSONIFY_PRETTYPRINT_REGULAR': False, 'JSONIFY_MIMETYPE': 'application/json', 
    'TEMPLATES_AUTO_RELOAD': None, 'MAX_COOKIE_SIZE': 4093}>
    '''
    app.config.from_object("settings.ProductionConfig")
    
    if __name__ == '__main__':
        app.run()

    settings.py

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    # __Author__:TQTL911
    # Version:python3.6.6
    # Time:2018/8/30 22:29
    
    
    class Config(object):
        DEBUG = False
        TESTING = False
        DATABASE_URI = 'sqlite://:memory:'
    
    
    class ProductionConfig(Config):
        DATABASE_URI = 'mysql://user@localhost/foo'
    
    
    class DevelopmentConfig(Config):
        DEBUG = True
    
    
    class TestingConfig(Config):
        TESTING = True
    
    # class Base(object):
    #     """
    #     创建一个父类;
    #     """
    #     xx = 123
    #
    #
    # class Pro(Base):
    #     """
    #     生产环境;
    #     """
    #     DEBUT = True
    #
    #
    # class Dev(Base):
    #     """
    #     开发环境;
    #     """
    #     DEBUG = True
  • 相关阅读:
    BGP的属性与配置
    IS-IS协议的简单设置
    ospf中建立虚链路、ospf与rip的重分发 stup与nssa区域的建立
    静态路由 默认路由 浮动路由配置
    centos7防火墙机制iptables与ebtables差别
    centos7虚拟机qemu学习
    centos7安装vncserver(windows控制其图形化界面)
    centos7虚拟机扩容
    centos7安装graylog
    centos7修改网卡
  • 原文地址:https://www.cnblogs.com/tqtl911/p/9562769.html
Copyright © 2020-2023  润新知