Flask介绍
Flask诞生于2010年,是Armin ronacher(人名)用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。它主要面向需求简单的小应用。
Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。比如可以用Flask-extension加入ORM、窗体验证工具、文件上传、身份验证等。Flask没有默认使用的数据库,你可以选择MySQL。其WSGI工具箱采用Werkzeug(路由模块),模板引擎则使用Jinja2。
可以说Flask框架的核心就是Werkzeug和Jinja2。
Python最出名的框架要数Django。此外还有Flask、Tornado等框架。虽然Flask不是最出名的框架,但是Flask应该算是最灵活的框架之一,这也是Flask受到广大开发者喜爱的原因。
可扩展性很强,对比与Django框架呢,他的灵活度就很高了,可以自己一些设计代码框架。比较适合一些,分层比较少,逻辑不怎么复杂的web项目。
Flask扩展包
Flask-SQLalchemy:操作数据库;
Flask-migrate:管理迁移数据库;
Flask-Mail:邮件;
Flask-WTF:表单;
Flask-script:插入脚本;
Flask-Login:认证用户状态;
Flask-RESTful:开发REST API的工具;
Flask-Bootstrap:集成前端Twitter Bootstrap框架;
Flask-Moment:本地化日期和时间;
安装好Flask后,用pycharm创建项目的时候,选择flask,就会直接给你把框架都生成好了的
一个简单的web:
在static可以放静态文件,如一些CSS、JS、photo等
templates文件夹可以存放页面
Flask中的路由操作
什么是路由
路由就是为了匹配用户的请求地址以及对应的视图函数。
就是用一个装饰器来说明了基础网页网址+上‘/’+其他地址的新地址的网页来干什么。
可以说,路由就是原网页基础上的一个新网页,这个新网页可能很大变化,也可能只是原网页上做一个简单的修改,比如查询,数据更新之类的。路由的体现
在Flask中,路由通过 @app.route() 装饰器来表示的
3.路由定义的基本方式
1️⃣请求方式限定
使用methods参数指定可接受的请求方式,可以是多种
我们可以设定一个网页是get还是post
#Flask中定义路由是通过装饰器实现的
#路由默认只支持get,如果需要增加,需要自行指定
@app.route('/',methods=['GET','POST'])
def hello_world():
return 'Hello World!'
如上代码我们指定了这个路由可以GET也可以POST
一般路由没有指定methods时,系统默认是GET
2️⃣给路由传参
有时候我们需要将同一个URL映射到同一个视图函数处理,比如:使用同一个视图函数来显示不同用户的订单信息。
@app.route('/order/<order_id>')
def get_order_id(order_id): #需要传参(填入参数)
# 参数类型默认是一个字符串,unicode
print (type(order_id))
return 'order_id %s' % order_id
路由传递的参数默认当作string处理,也就是传入数字或者字符串都可以进行处理显示
运行打开地址可以看到
如果想要对传入的参数进行限定,则可以这样
@app.route('/order/int:<order_id>')
def get_order_id(order_id): #需要传参(填入参数)
# 参数类型默认是一个字符串,unicode
print (type(order_id))
return 'order_id %s' % order_id
这里指定int,会调用系统的路由转换器进行匹配和转换。
==-==大致原理是将参数强转伪int,如果成功,则可以进行路由匹配
==-==如果参数无法转换成功,就无法匹配该路由
而使用数字就可以