一. 下载
pip3 install flask
二. 快速使用
2.1 方式一 >>> 函数形式
# 导入 flask
from flask import Flask
# 实例化, 参数任意 >>> app = Flask('abcd')
app = Flask(__name__)
# 注册路由, 并写接口函数
@app.route('/index')
def index():
return 'hello flask'
# 启动项目
if __name__ == '__main__':
app.run()
2.2 方式二 >>> 类形式
from flask import Flask
from flask.views import MethodView
app = Flask(__name__)
class LoginView(MethodView):
def get(self):
return 'get 请求'
def post(self):
return 'post 请求'
app.add_url_rule('/login', view_func=LoginView.as_view('login'))
if __name__ == '__main__':
app.run()
三. 小案例
3.1 py 文件
# 导入对应的需求
from flask import Flask, request, render_template, redirect, session
app = Flask(__name__)
# 修改代码将不需要重启
app.debug = True
# 使用 session 必须要设置的
app.secret_key = 'bijenfknekfnknsekfsesfesf'
user = [
{'id': 1, 'name': '张三'},
{'id': 2, 'name': '李四'},
{'id': 3, 'name': '王二'}
]
'''编写装饰器其实有一套固定的代码 不需要做任何理解'''
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
username = request.form.get('username')
password = request.form.get('password')
if username and password:
session['is_login'] = True
return redirect('/index')
@app.route('/index', methods=['GET'])
def index():
return render_template('index.html', **{'user_list': user})
# /detail/<int:id> 对应的 前端 url 地址
@app.route('/detail/<int:pk>', methods=['GET'])
# 函数的参数 对应 route(路由) 解析参数, 即<int:pk>中的pk, route有几个解析值 函数中就传几个。
def detail(pk):
return render_template('detail.html', **{'user_detail': user[pk - 1]})
if __name__ == '__main__':
app.run()
3.2 html 文件
"""--------------------------------login.html--------------------------------"""
<body>
<form method="post">
<label>
<input type="text" name="username">
</label>
<br>
<label>
<input type="password" name="password">
</label>
<br>
<input type="submit" value="提交">
</form>
</body>
"""--------------------------------index.html--------------------------------"""
<body>
<p>index 页面</p>
<table>
{% for v in user_list %}
<tr>
<td>{{v.id}}</td>
<td>{{v.name}}</td>
<td><a href="/detail/{{v.id}}">查看详情</a></td> <!--** 这里的路由跳转 -->
</tr>
{% endfor %}
</table>
</body>
"""--------------------------------detail.html--------------------------------"""
<body>
<table>
<tr>
<td>{{user_detail.id}}</td>
<td>{{user_detail.name}}</td>
</tr>
</table>
</body>