Python开发-Flask框架

Last updated on July 6, 2025 pm

安装

pip install flask

基础入门

  • 实例化一个Flask对象,创建一个路由,实现一个基本的页面
from flask import Flask
app = Flask(__name__)
def index():
    return "Hello world"

if __name__ == "__main__": 
    #当py文件被执行时,if下面的代码块将被运行
    #当py文件以模块形式被导入时,下面的代码块不被运行
    app.debug = True   #开启调试模式,修改完代码之后不必重启程序
    app.run()

route 之后的字符串表示拼接到 localhost:5000 后面的参数

<> 之中的传参可以带入到页面当中

  • 指定一个路由
@app.route('/name/<name>',methods=['GET','POST'])
#method 指定传参方式 POST或者GET方式
def putName(name):
  	return f'Hello {name}'

HTTP方法

  • 首先引入 request
from flask import Flask,request
  • GET 方式接受传参
request.args.get('传参变量名')
  • POST 方式接受传参
request.form('传参变量名')

eg:

@app.route('/method',methods=['GET','POST']) 
# methods 表示可以接受的传参方式
def method():
	if request.method == 'GET':
        name = requset.args.get('name')
		return "GET !!!" + name
	elif request.method == 'POST':
        name = request.form['name']
		return "POST !!!" + name

redirect 重定向

  • 引入 redirect 和 url_for
from flask imprt Flask,request,redirect,url_for

eg:

@app.route('/login',method=['GET'])
def login():
	key = "123456"
	UserKey = request.args.get('key')
	if UserKey == key:
		return redirect(url_for('login_ed'))
		
@app.route('/login_ed',method=['GET'])
	#定义一个新的页面

模板渲染

  • 首先在项目目录下建一个 template 文件夹,建立 html文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Hello {{name}}</h1>
</body>
</html>
  • 渲染 index.html 的同时 向文件传参 将name变量渲染
from flask import Flask,render_template

@app.route('/name/<name>')
def name(name):
  return render_template('index.html',name=name)

模板继承

  • 编写base页面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{% block title %}BasePage{% endblock %}</title>
</head>
<body>
    {% block content %}main{% endblock %}
    homepage
</body>
</html>
  • 编写 test1.html
{% extends "base.html" %}

{% block title %}Home Page{% endblock %}

{% block content %}
<h2>Welcome to the Home Page!</h2>
<p>Hello {{name}}</p>
{% endblock %}

控制结构

  • 分支结构
{% if name == "Lixiney" %}
<p>Hello admin</p>
{% else %}
<p>Hello {{name}}</p>
{% endif %}
  • 循环结构
{% for person in name %}
<p>{{person}}</p><br>
{% endfor %}

过滤器

过滤器用于在模板中格式化和处理变量数据

<p>{{ name|capitalize }}</p>
<p>{{ price|round(2) }}</p>
name|capitalize }}``` 将 name 变量的值首字母大写
```{{ price|round(2) }}``` 将 price 变量的值四舍五入到小数点后两位 ## 宏和模板包含 > 在一个模板中插入另一个模板的内容 * 创建宏 创建 templates/macos.html ```jinja2 {% macro render_item(item) %} <div> <h3>{{ item.title }}</h3> <p>{{ item.description }}</p> </div> {% endmacro %}
  • 使用宏

创建 templates/index.html

{% from "macros.html" import render_item %}

<h1>Items</h1>
{% for item in items %}
    {{ render_item(item) }}
{% endfor %}

安全性

用户输入的内容会被自动转义,以避免恶意代码注入

<p>{{ user_input }}</p>

模板上下文

  • 传入一个字典类型
@app.route('/profile/<username>')
def profile(username):
    user = {'name': username, 'age': 25}
    return render_template('profile.html', user=user)
  • 引用方法
<h1>{{ user.name }}</h1>
<p>Age: {{ user.age }}</p>

表单处理


Python开发-Flask框架
https://blog.lixey.top/posts/483d9cef/
Author
Lixiney
Posted on
June 28, 2025
Licensed under