flask入门

安装Flask

确保已安装Python(建议3.6+版本)。通过pip安装Flask:

bash 复制代码
pip install flask

创建基础应用

新建一个Python文件(如app.py),写入以下代码启动最小化Flask应用:

python 复制代码
from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, Flask!"

if __name__ == '__main__':
    app.run(debug=True)

运行后访问http://127.0.0.1:5000即可看到输出。

路由与视图

通过@app.route()定义路由,视图函数返回响应内容。支持动态路由:

python 复制代码
@app.route('/user/<username>')
def show_user(username):
    return f"User: {username}"

模板渲染

使用render_template渲染HTML模板。创建templates文件夹存放模板文件(如index.html):

python 复制代码
from flask import render_template

@app.route('/template')
def template_demo():
    return render_template('index.html', title='Flask Template')

模板中使用Jinja2语法传递变量:

html 复制代码
<h1>{{ title }}</h1>

静态文件处理

静态文件(CSS/JS/图片)存放在static目录下,通过url_for生成引用路径:

html 复制代码
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">

表单处理

安装flask-wtf扩展处理表单:

bash 复制代码
pip install flask-wtf

示例代码:

python 复制代码
from flask import request

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        return f"Welcome {username}"
    return '''
        <form method="post">
            <input type="text" name="username">
            <button type="submit">Submit</button>
        </form>
    '''

数据库集成

使用flask-sqlalchemy操作数据库:

bash 复制代码
pip install flask-sqlalchemy

配置SQLite数据库:

python 复制代码
from flask_sqlalchemy import SQLAlchemy

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True)

项目结构建议

标准项目目录结构:

复制代码
/project
  /static
  /templates
  app.py
  config.py
  requirements.txt

部署上线

使用gunicorn部署生产环境:

bash 复制代码
pip install gunicorn
gunicorn -w 4 app:app
相关推荐
宸津-代码粉碎机4 小时前
OpenAI 连夜迎战 Grok Bot 和 Muse:AI 智能体从 “会聊天” 到 “能办事”,现在入场还来得及吗
java·大数据·人工智能·分布式·python
Y3815326624 小时前
SERP API 计费口径:credits_charged、执行失败扣费与退款边界
python·搜索引擎
噢,我明白了5 小时前
java中唯一键和幂等键的应用
java·后端
GreenTea5 小时前
我把 Agent 的 while 循环拆掉了:一种你可能没想到的 Agent 架构
前端·后端·架构
考虑考虑5 小时前
synchronized字符串常量
java·后端·java ee
蒸鱼Yuzheng6 小时前
设备端性能工件可靠导出:断点续传、哈希、manifest 与失败恢复
android·自动化测试·python·adb·数据完整性
颜进强6 小时前
16 · NestJS LifecycleEvents 生命周期事件:五个钩子、三条边界,和 rag-server 的优雅停机
前端·后端·ai编程
圆圆讲门店7 小时前
挑选同城获客服务机构时需要考量的核心因素都有哪些?
大数据·网络·人工智能·python
GetcharZp7 小时前
定位不再一个个吐坐标:英伟达 LocateAnything 上手全攻略
后端
傻啦嘿哟7 小时前
Python的默认参数把我坑惨了,原来写[]和写None的区别这么大
开发语言·python·机器学习