flask基础

一. Python 现阶段三大主流Web框架 Django Tornado Flask 对比

1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用得到用不到,反正它全都有,属于全能型框架
2.Tornado 主要特点是原生异步非阻塞,在IO密集型应用和多任务处理上占据绝对性的优势,属于专注型框架
3.Flask 主要特点小而轻,原生组件几乎为0, 三方提供的组件请参考Django 非常全面,属于短小精悍型框架
Django 通常用于大型Web应用由于内置组件足够强大所以使用Django开发可以一气呵成
Tornado 通常用于API后端应用,游戏服务后台,其内部实现的异步非阻塞真是稳得一批
Flask 通常应用于小型应用和快速构建应用,其强大的三方库,足以支撑一个大型的Web应用
Django 优点是大而全,缺点也就暴露出来了,这么多的资源一次性全部加载,肯定会造成一部分的资源浪费
Tornado 优点是异步,缺点是干净,连个Session都不支持
Flask 优点是精悍简单,缺点是稳定性相对较差

二.Flask的安装和启动

        1.安装   a.命令行安装 pip install flask  b.直接在pycharm中下载
        2.启动 
                
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
    return '123'
app.run('127.0.0.1', '9999', debug=True)

 三.Flask中Response三贱客和小儿子

               1.return   'asdf'                          直接返回字符串
               2.return  render_template()       返回templates中的模板
               3.return  redirect()                     跳转
小儿子:
                1.send_file()                               打开并返回文件内容
                2.jsonify ()                                  返回一个Content-Type : application/json类型

 四.Flask中request中的参数

            
    1.request.form                以字典(to_dict())的形式返回form表单中的内容
                2.request.args                 以字典(to_dict())的形式返回url中的内容    
                3.request.method            返回请求方式
                4.request.values              返回form表单和url参数中的内容(慎用to_dict())
                5.request.data                 返回Content-Type不被认可的数据(以b''类型放在data中)
                6.request.json                 返回请求头为Content-Type:application/json的数据
 
                7.request.path                 /login
                8.request.url                    http://127.0.0.1:5000/login?a=1&b=2
                9.request.host                  127.0.0.1:5000
               10.request.host_url            http://127.0.0.1:5000/
                11.request.file                    获取文件,save保存
 

五.Flask中的session

                将 session 加密后存放在浏览器的 Cookie
        from flask import session
        app.secret_key = "jinwangba"  
        session["user"] = "yinwangba"
        session.get("user")

六.Flask路由中的参数

                1.method                      指定视图函数的请求方式,默认是GET
                2.endpoint                    反向地址,默认是视图函数地址名,可以用url_info()获得路由
                3.defaults={'nid':1}       指定视图函数的默认参数
                4.strict_slashes=True    是否严格遵循路由规则
                5.redirect_to='/login'    永久跳转地址

七.Flask中的实例化参数

       1.template_folder = 'temp'      template模板目录,默认当前项目中的tempaltes目录
                2.static_folder=''                        静态文件目录, 默认是static
                3.static_url_path='/static'            # 静态文件目录的url路径 默认不写是与static_folder同名,远程静态文件时复用
              
                        
        host_matching = False,  # 如果不是特别需要的话,慎用,否则所有的route 都需要host=""的参数
        subdomain_matching = False,  # 理论上来说是用来限制SERVER_NAME子域名的,但是目前还没有感觉出来区别在哪里
        instance_path = None,  # 指向另一个Flask实例的路径
        instance_relative_config = False  # 是否加载另一个实例的配置
        root_path = None  # 主模块所在的目录的绝对路径,默认项目目录
 

八.Flask中app的配置

  修改配置的两种方式
          1.直接对app.config进行修改
            app.config["DEBUG"] = True
     2.使用类的方式导入
                        首先要有一个settings.py的文件
class FlaskSetting:
DEBUG = True
SECRET_KEY = "DragonFire"
然后我们在Flask的启动文件中就可以这么写
from flask import Flask
 
 
app = Flask(__name__) # type:Flask
app.config.from_object("settings.FlaskSetting")
这叫做类导入配置
3.直接app.debug = True这种方式
 

九. Flask中的蓝图

                1.创建一个蓝图文件
                        
              from flask import Blueprint            #导入Flask中的蓝图Blueprint
                                                            
              sv = Blueprint('sv', __name__,url_ prefix='/hu')         #实例化一个蓝图对象   url_prefix 前缀
               
              @sv.route('/hu')                        #添加路由
                           def  view():
                                    return 'dassdfa'
 
            2.flask主文件的内容
                
            from flask import Flask
            from  blue import  sv   导入此前写好的蓝图模块
            
            app = Flask(__name__)
            app.register_blueprint(sv)  在Flask对象中注册蓝图模块中的蓝图对象 s_view 中的 sv
            
            app.run()          
 
 

十.Flask中的特殊装饰器

                1.@app.template_global()
                2.@app.template_filter()       自定义过滤器
    
        @app.template_global()
        def ab(a,b):
            return a +b
                在模板中使用{{ ab(1,2)}}
                @app.template_filter()
                def abc(a, b, c):
                    return a+b+c
                在模板中使用 { { 2 | abc(2,2) }  }
 
 
                3.@app.before_request            请求进入视图函数之前
                4.@app.after_request               视图函数结束之后,返回客户端之前
                              正常执行顺序:be1 -- be2 -- be3 -- af3 -- af2 --af1      
                                异常(在be2是出现异常):  be1 -- be2 --af3 -- af2 --af1                                      
 
                5.@app.errorhandler(404)         重新定义错误页面
 
posted @ 2018-07-26 17:44  古月蜀黍  阅读(122)  评论(0编辑  收藏  举报