Flask学习

什么叫Flask:Flask 是一个 web 框架。也就是说 Flask 为你提供工具,库和技术来允许你构建一个 web 应用程序。这个 wdb 应用程序可以使一些 web 页面、博客、wiki、基于 web 的日历应用或商业网站。

Flask 属于微框架(micro-framework)这一类别,微架构通常是很小的不依赖于外部库的框架。这既有优点也有缺点,优点是框架很轻量,更新时依赖少,并且专注安全方面的 bug,缺点是,你不得不自己做更多的工作,或通过添加插件增加自己的依赖列表

django和Flask的比较
(1)Flask

  • Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过
  • Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库
  • 入门简单,即便没有多少web开发经验,也能很快做出网站
  • 非常适用于小型网站
  • 非常适用于开发web服务的API
  • 开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验
  • 各方面性能均等于或优于Django
  • Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库
  • Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不一
  • Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django
  • Flask比Django更加Pythonic,与Python的philosophy更加吻合

(2)django

  • Django太重了,除了web框架,自带ORM和模板引擎,灵活和自由度不够高
  • Django能开发小应用,但总会有“杀鸡焉用牛刀”的感觉
  • Django的自带ORM非常优秀,综合评价略高于SQLAlchemy
  • Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja
  • Django自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDB等NoSQL数据,需要选取合适的第三方库,且总感觉Django+SQL才是天生一对的搭配,Django+NoSQL砍掉了Django的半壁江山
  • Django目前支持Jinja等非官方模板引擎
  • Django自带的数据库管理app好评如潮
  • Django非常适合企业级网站的开发:快速、靠谱、稳定
  • Django成熟、稳定、完善,但相比于Flask,Django的整体生态相对封闭
  • Django是Python web框架的先驱,用户多,第三方库最丰富,最好的Python库,如果不能直接用到Django中,也一定能找到与之对应的移植
  • Django上手也比较容易,开发文档详细、完善,相关资料丰富

flask的安装

  • 创建虚拟环境:virtualenv –no-site-packages flaskenv
  • cd flakenv
  • cd Script
  • 启动虚拟环境: activate
  • 在虚拟环境中:pip intsall flask

第一个flask项目

  • 项目目录结构
    这里写图片描述
  • flaskproject.py 文件
from flask import Flask, render_template
from flask_script import Manager
from App import create_app

app = create_app()

manager = Manager(app=app)

if __name__ == '__main__':
    # 启动项目
    # debug=True 表示启动debug调试,port='8000' 表示启用8000端口,默认是5000
    # host='0.0.0.0' 表示所有都能访问
    # app.run(debug=True, port='8000', host='0.0.0.0') # 第一种启动方法
    manager.run() #第二种启动方法
  • App里init.py文件,进行初始化

from flask import Flask
from App.views import blue

def create_app():
    # 创建app,初始化,__name__主模块名或者包
    app = Flask(__name__)
    # 注册蓝图
    app.register_blueprint(blueprint=blue)

    return app
  • App里views.py文件(包含业务逻辑处理的方法)
from flask import render_template
import uuid
from flask import send_file
from flask import Blueprint

# 蓝图的作用: 管理路由(url)
# 初始化"蓝图"
blue = Blueprint('first', __name__)


# 只要用来处理业务逻辑

# 路由(127.0.0.1::5000)

@blue.route('/')
def hello_world():
    # 视图函数
    return 'Hello World!'


@blue.route('/hello/<name>/')
def hello_mian(name):
    return 'hello %s' % (name)


@blue.route('/helloint/<int:id>/')
def hello_int(id):
    return 'hello int:%s' % (id)


@blue.route('/index/')
def hello():
    return send_file('../templates/hello.html')


@blue.route('/getfloat/<float:price>/')
def hello_float(price):
    return 'float:%s' % (price)


@blue.route('/getstr/<string:name>/')
def hello_name(name):
    return 'hello name:%s' % name


@blue.route('/getpath/<path:url_path>/')
def hello_path(url_path):
    return 'path: %s' % url_path


@blue.route('/getuuid/')
def get_uuid():
    a = uuid.uuid4()
    return str(a)


@blue.route('/getbyuuid/<uuid:uu>/')
def hello_uuid(uu):
    return 'uu:%s' % uu

猜你喜欢

转载自blog.csdn.net/qq_40861391/article/details/80307355
今日推荐