zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Swift3 重写一个带占位符的textView
    Swift3 使用系统UIAlertView方法做吐司效果
    Swift3 页面顶部实现拉伸效果代码
    Swift3 倒计时按钮扩展
    iOS 获取当前对象所在的VC
    SpringBoot在IDEA下使用JPA
    hibernate 异常a different object with the same identifier value was already associated with the session
    SpringCloud IDEA 教学 番外篇 后台运行Eureka服务注册中心
    SpringCloud IDEA 教学 (五) 断路器控制台(HystrixDashboard)
    SpringCloud IDEA 教学 (四) 断路器(Hystrix)
  • 原文地址:https://www.cnblogs.com/tqtl911/p/9562769.html
Copyright © 2011-2022 走看看