Flask是个Python的迷你Web框架,小巧得只有一个核心但啥都能干。干Web开发的时候特别顺手,跟用瑞士军刀似的 - 小是小了点,但该有的功能一个不少。
搭个最基础的Flask应用贼简单。看我写几行代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, 我的第一个Flask应用!'
if __name__ == '__main__':
app.run()
这段代码运行起来,打开浏览器输入http://127.0.0.1:5000就能看到结果了。装饰器@app.route('/')告诉Flask这个网址该咋处理,/表示网站的根地址。
网站不可能就一个页面对吧?Flask用路由来处理不同的网址:
@app.route('/blog')
def blog():
return '这是我的博客页面'
@app.route('/user/<username>')
def show_user(username):
return f'你好啊,{username}!'
温馨提示:是个变量部分,访问/user/小明时,username就是“小明”
光返回字符串多没意思。Flask用Jinja2模板引擎来渲染漂亮的HTML页面:
from flask import render_template
@app.route('/welcome/<name>')
def welcome(name):
return render_template('welcome.html', user_name=name)
HTML模板长这样:
欢迎你,{{ user_name }}!
刷新新标签页
分享## 处理表单数据
Flask处理表单数据也贼简单:
from flask import request
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
# 处理登录逻辑
return f'收到登录请求:{username}'
return render_template('login.html')
温馨提示:别忘了设置methods=['GET', 'POST'],不然表单提交时会报405错误
Flask本身不带数据库,但可以配合SQLAlchemy来搞定数据库操作:
from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
项目大了就得用蓝图来组织代码,把不同功能的路由分开管理:
from flask import Blueprint
admin = Blueprint('admin', __name__)
@admin.route('/dashboard')
def dashboard():
return '这是管理后台'
# 主应用中注册蓝图
Flask上手特别快,配置少,想加功能就装对应的扩展。搞个小网站or写个API接口,Flask绝对是最佳选择。记住一点,Flask不是啥都帮你做好的全能框架,它就是个给你提供基础工具的工具箱,剩下的得自己动手。
开发时记得打开调试模式(app.run(debug=True)),不然改个代码还得重启烦死了。Flask的错误提示做得贼好,哪出问题一目了然。
坚持用Flask写几个小项目,慢慢就能体会到它的优雅之处。网站开发也可以玩得这么快乐,Flask就是这么让人着迷。
领取专属 10元无门槛券
私享最新 技术干货