Python3+Flask安装使⽤教程详解⼀、Flask安装环境配置
当前我的开发环境是Miniconda3+PyCharm。开发环境其实⽆所谓,⾃⼰使⽤Python3+Nodepad都可以。安装Flask库:
pip install Flask
⼆、第⼀个Flask应⽤程序
将以下内容保存为helloworld.py:
# 导⼊Flask类
from flask import Flask
# 实例化,可视为固定格式
app = Flask(__name__)
# route()⽅法⽤于设定路由;类似spring路由配置
@ute('/helloworld')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
# app.run(host, port, debug, options)
# 默认值:host="127.0.0.1", port=5000, debug=False
app.run(host="0.0.0.0", port=5000)
三、get和post实现
3.1 创建⽤到的模板⽂件
Flask默认到templates⽬录下查模板⽂件,在上边helloworld.py同级⽬录下创建templates⽂件夹。
在templates⽂件夹下创建get.html,写⼊以下内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>get请求⽰例</title>
</head>
<body>
<form action="/deal_request" method="get">
<input type="text" name="q" />
<input type="submit" value="搜索" />
</form>
</body>
</html>
再在templates⽂件夹下创建post.html,写⼊以下内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>post请求⽰例</title>
</head>
<body>
<form action="/deal_request" method="post">
<input type="text" name="q" />
<input type="submit" value="搜索" />
</form>
</body>
</html>
最后在templates⽂件夹下创建result.html,写⼊以下内容:
<!-- Flask 使⽤Jinja2模板引擎,Jinja2模板引擎源于Django板模所以很多语法和Django是类似的 -->
<h1>{{ result }}</h1>
3.2 编写相关的处理⽅法
在helloworld.py中添加get_html()、post_html()和deal_request()三个⽅法,更多说明见注释。当前helloworld.py内容如下:
# 导⼊Flask类
from flask import Flask
from flask import render_template
from flask import request
# 实例化,可视为固定格式
app = Flask(__name__)
# route()⽅法⽤于设定路由;类似spring路由配置
#等价于在⽅法后写:app.add_url_rule('/', 'helloworld', hello_world)
@ute('/helloworld')
python入门教程appdef hello_world():
return 'Hello, World!'
# 配置路由,当请求get.html时交由get_html()处理
@ute('/get.html')
def get_html():
# 使⽤render_template()⽅法重定向到templates⽂件夹下查get.html⽂件
return render_template('get.html')
# 配置路由,当请求post.html时交由post_html()处理
@ute('/post.html')
def post_html():
# 使⽤render_template()⽅法重定向到templates⽂件夹下查post.html⽂件
return render_template('post.html')
# 配置路由,当请求deal_request时交由deal_request()处理
# 默认处理get请求,我们通过methods参数指明也处理post请求
# 当然还可以直接指定methods = ['POST']只处理post请求, 这样下⾯就不需要if了
@ute('/deal_request', methods = ['GET', 'POST'])
def deal_request():
hod == "GET":
# get通过("param_name","")形式获取参数值
get_q = ("q","")
return render_template("result.html", result=get_q)
hod == "POST":
# post通过request.form["param_name"]形式获取参数值
return render_template("result.html", result=post_q)
if __name__ == '__main__':
# app.run(host, port, debug, options)
# 默认值:host=127.0.0.1, port=5000, debug=false
app.run()
3.3 查看运⾏效果
重新运⾏helloworld.py。
当前⽬录结构如下(.idea⽬录不⽤管):
get.html如下:
get查询结果如下:
post.html如下:
post查询结果如下:
json格式不支持换行吗四、restful
所谓restful简单理解就是以json等格式(⽽⾮以前的表单格式)发起请求,及以json等格式(⽽⾮以前的html)进⾏响应。等下我们通过curl模拟rest请求,然后使⽤jsonify实现rest响应。
4.1 服务端实现代码
# 导⼊Flask类
from flask import Flask, jsonify
小学慕课网登录平台from flask import render_template
from flask import request
# 实例化,可视为固定格式
app = Flask(__name__)
# route()⽅法⽤于设定路由;类似spring路由配置
#等价于在⽅法后写:app.add_url_rule('/', 'helloworld', hello_world)
@ute('/helloworld')
def hello_world():
return 'Hello, World!'
# 配置路由,当请求get.html时交由get_html()处理
@ute('/get.html')
def get_html():
# 使⽤render_template()⽅法重定向到templates⽂件夹下查get.html⽂件
return render_template('get.html')
# 配置路由,当请求post.html时交由post_html()处理
@ute('/post.html')
for ya下载def post_html():
# 使⽤render_template()⽅法重定向到templates⽂件夹下查post.html⽂件
return render_template('post.html')
# 配置路由,当请求deal_request时交由deal_request()处理
# 默认处理get请求,我们通过methods参数指明也处理post请求
# 当然还可以直接指定methods = ['POST']只处理post请求, 这样下⾯就不需要if了
@ute('/deal_request', methods=['GET', 'POST'])
def deal_request():
hod == "GET":
# get通过("param_name","")形式获取参数值
get_q = ("q","")
return render_template("result.html", result=get_q)
# post通过request.form["param_name"]形式获取参数值
post_q = request.form["q"]
return render_template("result.html", result=post_q)
@ute('/rest_test',methods=['POST'])
def hello_world1():
"""
通过request.json以字典格式获取post的内容
通过jsonify实现返回json格式
"""
post_param = request.json
result_dict = {
"result_code": 2000,
"post_param": post_param
}
return jsonify(result_dict)
if __name__ == '__main__':
# app.run(host, port, debug, options)
# 默认值:host=127.0.0.1, port=5000, debug=false
app.run()
4.2 请求模拟
curl -H "Content-Type:application/json" -X POST --data '{"username": "ls","password":"toor"}' 127.0.0.1:5000/rest_test
4.3 效果截图
五、Flask与Django⽐较
extendsim仿真实例5.1 Django配置复杂
如果对Django不是很了解,可以参看
dbsnp数据库仅从⽂章长度看就⽐这篇长很多,所以Django⽐Flask复杂(得多)是肯定的。更具体⽐较如下:
⽐较项Django Flask复杂度⽐较说明
项⽬创建Django需要⽤命令创建项⽬Flask直接编写⽂件就可运⾏Django复杂Django需要⽤命令创建项⽬是因为要创建出整个项⽬框架
路由Django使⽤专门的urls.py⽂件Flask直接使⽤@ute()Django笨重Django类似Strut2的配置Flask类似Spring的配置,Flask感觉更好get和post request.GET['name']和request.POST["name"]("name","")和request.form["q"]差不多Flask格式上不统⼀
restful使⽤django-resful框架使⽤jsonify差不多Flask不需要单建⼀个app,更直观⼀些
数据库操作django集成了对数据库的操作Flask没集成对数据库的操作要另⾏直连或使⽤sqlalchemy差不多django复杂很⼤程度来源于对数据库的集成。
5.2 Flask和Django各⾃适合使⽤场景
我们经常会听说这样的⼀个近乎共识的观点:Django是Python最流⾏的Web框架但配置⽐较复杂,Flask是⼀个轻量级的框架配置⽐较简单如果项⽬⽐较⼩推荐使⽤Flask。
进⼀步来说,Flask的轻量来源其“暂时不⽤的功能都先不做处理”,Django复杂来源于其“可能⽤到的功能都先集成”;随着项⽬规模的扩⼤最终Django有的东西Flask也都需要有。
所以,如果平时你⽤python是东⽤⼀个库西⽤⼀个库,东写⼀个场景西写⼀个场景,⽽不是专门开发web,那么你适合使⽤Flask,因为这样你的学习成本低及以前的知识都能⽤上去。
本⽂主要讲解了Python3+Flask安装使⽤教程如果想查看更多关于Python3+Flask的知识⽂章请点击下⾯相关⽂章
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论