Flask之基础入门(1)

最近项目逐渐稳定,趁着不太忙的时候对之前搭建的自动化测试框架做些重构升级。现存的测试框架比较简单,主要功能是基于csv文件中定义的数据自动生成测试用例,然后使用pytest执行用例生成html格式报告。实际使用中,在macos上编辑csv文件很容易出错。基于此,我们决定将该平台重构封装成一个通用的自动化测试框架,QA能简单在页面上提交测试数据,也可以导入csv/yaml格式测试数据或者直接导入postman文件,自动生成测试测试用例代码,能自由的组合测试用例创建测试计划。业界最流程的两个web框架Flask和Django,最终我们选择了更轻量的Flask。以前只是简单了解,现在正好借此机会重新熟悉一下Flask。

1 介绍

Flask 是一个 Python 实现的 Web 开发微框架。 微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展。Flask 不会替你做出太多决策——比如使用何种数据库。而那些 Flask 所选择的——比如使用何种模板引擎——则很容易替换。除此之外的一切都由可由你掌握。如此,Flask 可以与您珠联璧合。
默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。
Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。

  • Web Server Gateway Interface(Web服务器网关接口,WSGI)已被用作Python Web应用程序开发的标准。 WSGI是Web服务器和Web应用程序之间通用接口的规范。
  • jinja2是Python的一个流行的模板引擎。Web模板系统将模板与特定数据源组合以呈现动态网页。

2 Flask和Django

Flask:
Flask定位是微型框架,这意味着它的目标就是给你提供一个Web开发的核心支持。如果你需要其他的功能,你可以使用第三方插件,甚至可以自己写一个插件。

  • Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库
  • 入门简单,即便没有多少web开发经验,也能很快做出网站 非常适用于小型网站
  • 非常适用于开发web服务的API
  • 开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验
    各方面性能均等于或优于Django
  • Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不一
  • Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django
  • Flask比Django更加Pythonic,与Python的philosophy更加吻合
    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上手也比较容易,开发文档详细、完善,相关资料丰富

3 环境准备

准备沙箱环境

bruce-mac-pro:PycharmProjects bruce.xu$ python3.7 -m venv python3.7env

激活沙箱

bruce-mac-pro:PycharmProjects bruce.xu$ source python3.7env/bin/activate
(python3.7env) bruce-mac-pro:PycharmProjects bruce.xu$

安装依赖包

(python3.7env) bruce-mac-pro:PycharmProjects bruce.xu$ pip3 install flask

4 快速入门

4.1 基本用法
from flask import Flask, current_app, redirect, url_for,current_app
# 创建flask的应用对象
# __name__表示当前的模块名字
#  模块名,flask以这个模块所在的目录为总目录,默认这个目录中的static为静态目录,templates为模板目录
app = Flask(__name__,
            static_url_path="/python",  # 访问静态资源的url前缀, 默认值是static
            static_folder="static",  # 静态文件的目录,默认就是static
            template_folder="templates",  # 模板文件的目录,默认是templates
            )
# 配置参数的使用3中方式(一般常用前面两种)
# 1. 使用配置文件,在项目目录下创建config.cfg文件,调用一下方法引用
app.config.from_pyfile("config.cfg")

# 2. 使用对象配置参数
class Config(object):
    DEBUG = True
    LOVE= "python"
app.config.from_object(Config)

# 3. 配置参数直接操作config的字典对象
 app.config["DEBUG"] = True

@app.route("/home")
def index():
    # 读取配置参数
    # 1. 直接从全局对象app的config字典中取值
    # print(app.config.get("cloudwalk"))
    # 2. 通过current_app获取参数,一般在取不到app对象的时候可以用current_app,它是app对象的代理对象。
    print(current_app.config.get("cloudwalk"))
    #可以直接向浏览器返回字符串,后面讲解response的多种方式。
    return "hello cloudwalk"

#1.可以注册多个路由,都能同时访问接口。
#2. 使用url_for的函数,通过视图函数的名字找到视图对应的url路径,下面例子中index是上面的函数名。
#3.redirect可以重定向到一个新的视图下面。
#4.methods可以指定请求的方式
@app.route("/login2")
@app.route("/login", methods=["GET", "POST"])
def login():
    url = url_for("index")
    return redirect(url)

# 路由传递的参数默认当做string处理,这里指定int,尖括号中冒号后面的内容是动态的
#这里指定int类型的转换器,也是比较常用,可以在函数中取到请求路径符合条件的值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值