zoukankan      html  css  js  c++  java
  • Flask 入门

    Flask 是一个轻量级框架,也是Python三大框架之一,Flask框架比较简单适合初学者学习。

    Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL

    其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是 Flask 框架的核心。

     

    Flask 是python三大web框架之一,比之其他两大框架django和tornado而言,它更加的轻量化,开发效率更高,是入门web框架的首选。

     

    同类的python框架还有 bottle  web.py 

    Flask常用扩展包:

    Flask-SQLalchemy:操作数据库;

    Flask-script:插入脚本;

    Flask-migrate:管理迁移数据库;

    Flask-Session:Session存储方式指定;

    Flask-WTF:表单;

    Flask-Mail:邮件;

    Flask-Bable:提供国际化和本地化支持,翻译;

    Flask-Login:认证用户状态;

    Flask-OpenID:认证;

    Flask-RESTful:开发REST API的工具;

    Flask-Bootstrap:集成前端Twitter Bootstrap框架;

    Flask-Moment:本地化日期和时间;

    Flask-Admin:简单而可扩展的管理接口的框架

     https://www.cnblogs.com/Niuxingyu/p/10139709.html 内有python web三大框架的简单介绍

    终端下载插件命令  pip install Flask

    建立Flask对象

    使用Flask路由器,指定网址和控制器
     
     '/‘ 代表主页
    @为装饰器
     
     
     
     使用程序入口,将flask应用启动
    app.run(debug=True)  
     (默认为False。False时(冷启动),如果py文件更改后需要重启服务才能更新页面。如果为True时(热启动),每次更新py文件会自动更新页面。)
    给网址增加参数功能,使用<变量名称>,函数方法要和路由器定义的参数同步(返回值用的是格式化输出)
    @app.route('/hello/<id>/<name>')
    def hello(id, name):
        print(id)
        return "hello"+"你是参数是%s,%s" % (id, name)
    使用重定向模块来进行跳转
    # 导包,flask,导入flask里的重定向模块redirect
    from flask import Flask, redirect
    
    @app.route("/1")
    def reurl():
        # 返回用redirect返回一个调转网址
        return redirect("/")
    使用url_for方法来实现简易的站内跳转,参数指定路由方法名称
    导包,flask,导入flask里的重定向模块redirect,url_for模块,
    from flask import Flask, redirect, url_for
    def reurl_in(): # 返回用redirect跳转一个网址再用url_for指定一个站内方法名称 return redirect(url_for('hello'))

    Flask框架中的四种请求勾子

    用 before_request() 装饰的函数会在请求前调用,它没有参 数。用 after_request()装饰的函数在请求结束后调用,需要 传入响应。它们必须返回那个响应对象或是不同的响应对象。但当异常抛出时,它们 不一定会被执行,这时可以使用teardown_request() 装饰器, 它装饰的函数将在响应构造后执行,并不允许修改请求,返回的值会被忽略。如果在 请求已经被处理的时候抛出异常,它会被传递到每个函数,否则会传入一个 None 。

    1.在发生第一次请求之前调用 before_first_request 方法

    # 装饰器后跟的是方法
    @app.before_first_request
    def before_first_request():
        print("这是第一次请求之前调用的方法")
    2.在每一次请求之前调用
    @app.before_request
    def before_request():
        print("每一次调用")
    3.在请求之后调用的方法,调用之后必须传相应参数,然后将相应内容返回
    @app.after_request
    def after_request(response):
        print("请求之后调用")
        print(response)
        return response

    4.在请求之后,调用服务器出现的错误信息
    @app.teardown_request
    def teardown_request(e):
        print("服务器出现的错误是 %s" % str(e))
     
     
     
     
     
    使用jsonify模块来让网页直接显示 json数据
    # 导包,flask,导入flask里的重定向模块,url_for站内跳转,jsonify json强转
    from flask import Flask, redirect, url_for, jsonify
    
    @app.route('/json')
    def re_json():
        # 定义好数据格式
        json_dict = {'id': 10, 'title': "flask学习", 'content': "jsonify强转"}
        # 使用jsonify来把定义好数据的数据转换成json格式,并用return返回
        return jsonify(json_dict)
  • 相关阅读:
    vue init webpack projectName命令运行报错 解决方法
    DIV实际高度小于设置高度的问题
    openlayers 地图要素的多种高亮方式 Demo(可直接运行)
    加载wkt到地图 Demo (可直接运行)
    openlayers 框选地图得到选框范围(坐标)Demo(可直接运行)
    element+vue可远程搜索可懒加载的下拉框组件
    Android-使用约束布局(ConstraintLayout)构建灵活的UI【译】
    Mysql explain 执行计划详解(转)
    Managing Hierarchical Data in MySQL(邻接表模型)[转载]
    无限极分类原理与实现(转)
  • 原文地址:https://www.cnblogs.com/Niuxingyu/p/10139137.html
Copyright © 2011-2022 走看看