伊春市网站建设_网站建设公司_自助建站_seo优化
2026/1/16 20:02:16 网站建设 项目流程

Flask 核心知识点速查手册

📌 基础篇

1. Flask 应用结构

fromflaskimportFlask app=Flask(__name__)# 创建应用实例@app.route("/")# 路由装饰器defindex():return"Hello World"if__name__=="__main__":app.run(debug=True)# 启动服务器

2. 路由系统

# 基础路由@app.route("/")# 动态路由@app.route("/user/<username>")@app.route("/post/<int:id>")# 多方法支持@app.route("/api",methods=["GET","POST"])

3. 请求处理

fromflaskimportrequest# 获取请求数据request.method# 请求方法request.args# GET参数request.form# 表单数据request.json# JSON数据request.headers# 请求头

4. 响应处理

# 返回字符串return"文本"# 返回JSONreturn{"key":"value"}# Flask自动转为JSON# 自定义状态码returnjsonify(data),201# 重定向fromflaskimportredirectreturnredirect("/new-url")

📌 模板篇

5. 模板渲染

fromflaskimportrender_template# 渲染模板并传参returnrender_template("index.html",name="John",items=items)

6. Jinja2 模板语法

<!-- 变量 -->{{ variable }}<!-- 循环 -->{% for item in items %} {{ item }} {% endfor %}<!-- 条件 -->{% if condition %}<p>条件成立</p>{% endif %}<!-- 安全输出HTML -->{{ html_content|safe }}

7. 模板继承

<!-- base.html --><html><body>{% block content %}{% endblock %}</body></html><!-- child.html -->{% extends "base.html" %} {% block content %}<h1>子页面内容</h1>{% endblock %}

📌 进阶篇

8. 动态路由参数

# 字符串参数@app.route("/<username>")defprofile(username):returnf"用户:{username}"# 类型转换器@app.route("/post/<int:post_id>")# int, float, path, uuid@app.route("/<any(blog,article):section>/<id>")

9. 请求钩子(Middleware)

@app.before_requestdefbefore_each_request():# 每个请求前执行pass@app.after_requestdefafter_each_request(response):# 每个请求后执行returnresponse

10. 错误处理

@app.errorhandler(404)defpage_not_found(error):return"页面不存在",404@app.errorhandler(500)defserver_error(error):return"服务器错误",500

📌 数据篇

11. 处理JSON数据

# 发送JSON请求importrequests requests.post(url,json={"key":"value"})# 接收JSON数据@app.route("/api",methods=["POST"])defapi():data=request.get_json()# 获取JSON数据returnjsonify(data)# 返回JSON响应

12. 表单处理

fromflaskimportrequest@app.route("/submit",methods=["POST"])defsubmit():username=request.form.get("username")password=request.form.get("password")returnf"用户:{username}"

📌 外部API集成

13. 调用外部API

importrequests# GET请求response=requests.get(url,params=params)data=response.json()# POST请求response=requests.post(url,json=data)# 添加请求头headers={"Authorization":"Bearer token"}response=requests.get(url,headers=headers)

14. 错误处理与超时

try:response=requests.get(url,timeout=5)response.raise_for_status()# 检查状态码data=response.json()exceptrequests.Timeout:return"请求超时"exceptrequests.RequestExceptionase:returnf"请求失败:{e}"

📌 项目结构

15. 基础项目结构

项目名称/ ├── app.py # 主应用文件 ├── requirements.txt # 依赖列表 ├── templates/ # 模板目录 │ └── index.html ├── static/ # 静态文件 │ ├── css/ │ ├── js/ │ └── images/ └── README.md

16. requirements.txt 示例

Flask==2.3.3 requests==2.31.0 python-dotenv==1.0.0

📌 实战代码片段

17. 猜数字API

@app.route("/<guess>")defguess_number(guess):try:guess=int(guess)ifguess==41:return{"correct":True,"message":"恭喜!"}return{"correct":False,"message":"再试试"}except:return{"error":"请输入数字"}

18. 待办事项列表

items=[]@app.route("/",methods=["GET","POST"])deftodo():ifrequest.method=="POST":data=request.get_json()items.append(data["item"])returnrender_template("list.html",items=items)

19. 词云生成器

@app.route("/<topic>")defwordcloud(topic):# 获取维基百科内容response=requests.get(f"维基百科API/{topic}")text=response.json()["extract"]# 生成词云wordcloud=WordCloud().generate(text)svg=wordcloud.to_svg()returnrender_template("wordcloud.html",svg=svg)

🎯 核心要点速记

分类关键字用途
应用Flask(__name__)创建应用
路由@app.route()定义URL映射
请求request获取请求数据
响应return,jsonify()返回响应
模板render_template()渲染HTML
模板语法{{ }},{% %}动态内容
动态路由<variable>URL参数捕获
错误处理@app.errorhandler()自定义错误页面
外部调用requests调用API
JSON处理get_json(),jsonify()JSON数据交换

⚡ 一句话总结每个知识点

  1. 创建应用app = Flask(__name__)
  2. 定义路由@app.route("/path")
  3. 处理请求:使用request对象
  4. 返回响应:直接返回或jsonify()
  5. 渲染模板render_template("模板.html", 参数)
  6. 模板变量{{ 变量名 }}显示内容
  7. 模板逻辑{% for %}循环,{% if %}条件
  8. 动态路由@app.route("/<参数名>")
  9. 接收JSONrequest.get_json()
  10. 调用APIrequests.get(url)requests.post()
  11. 错误处理try-except捕获异常
  12. 启动应用app.run(debug=True)

💡 开发流程速查

开发一个新端点

  1. 定义路由:@app.route("/endpoint", methods=["METHOD"])
  2. 创建函数:def function_name():
  3. 获取数据:data = request.get_json()param = request.args.get("key")
  4. 处理逻辑:你的业务代码
  5. 返回响应:return jsonify(result)return render_template(...)

常见状态码

  • 200:成功
  • 201:创建成功
  • 400:请求错误
  • 401:未授权
  • 404:资源不存在
  • 500:服务器错误

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询