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)
  • 相关阅读:
    204. Count Primes (Integer)
    203. Remove Linked List Elements (List)
    202. Happy Number (INT)
    201. Bitwise AND of Numbers Range (Bit)
    200. Number of Islands (Graph)
    199. Binary Tree Right Side View (Tree, Stack)
    198. House Robber(Array; DP)
    191. Number of 1 Bits (Int; Bit)
    190. Reverse Bits (Int; Bit)
    189. Rotate Array(Array)
  • 原文地址:https://www.cnblogs.com/Niuxingyu/p/10139137.html
Copyright © 2011-2022 走看看