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

最新文章

  1. C# Listview 数据绑定
  2. 移动web app开发必备 - zepto事件问题
  3. Java提高篇(二六)-----hashCode
  4. Linux系统调用---同步IO: sync、fsync与fdatasync【转】
  5. 使用git向github中添加项目并更新(备忘录)
  6. Java 网络编程(转)
  7. Freemarker学习中遇到的问题
  8. 2.JQuery AJAX
  9. ng-options
  10. 工作中遇到的浏览器差别(就不叫IE6bug了)
  11. 关于(x&amp;y)+((x^y)&gt;&gt;1)的探究
  12. 表单验证插件jquery.validate的使用方法演示
  13. 豹哥嵌入式讲堂:ARM开发中有用的文件(1)- source文件
  14. PHP cURL实现模拟登录与采集使用方法详解教程
  15. SQL[Err] ORA-00979: not a GROUP BY expression
  16. 【协议】1、tcp,http,socket协议介绍
  17. 获取Methods成员方法类
  18. [转帖]Edge投降Chromium!微软王牌浏览器是如何跪倒的
  19. 【WIN10】WIN2D——圖像處理
  20. 20155227 2016-2017-2 《Java程序设计》第四周学习总结

热门文章

  1. AppScale3.01
  2. U盘小偷——C++实现U盘插入检测和文件扫描拷贝
  3. 求最大公约数和最小公倍数_python
  4. python_23_tuple
  5. LuceneTest
  6. 解决centos7 nslookup:command not found
  7. 网络编程——TCP协议和通信
  8. c++ 中十进制 八进制 十六进制 二进制转换 最简方法
  9. 解决Linux使用php命令 -base comment not found并安装composer
  10. day14之模块