Flask模板渲染与Get和Post请求详解

巷口听风
巷口听风
发布时间:2026-10-16| 3人浏览过
原创

本文详细介绍Flask框架中的模板渲染机制及HTTP请求处理。内容涵盖如何使用render_template加载HTML文件,通过template_folder自定义模板路径,以及配置路由以区分GET和POST请求。重点讲解利用request.form获取表单数据的具体代码实现与参数解析方法。

模板渲染

模板渲染的核心功能在于让Flask框架加载并展示HTML文档。当开发者拥有静态HTML文件并希望将其作为网页内容展示时,必须通过Flask进行渲染处理。

首先,需要将HTML文件命名为“模板渲染.html”,并将其放置在templates目录下,以便Flask能够正确识别。

接下来,在Python代码中需要导入render_template类,这是执行渲染操作的关键模块。

from flask import Flask,render_template

此外,开发者可以通过配置template_folder参数来修改模板文件的默认查找路径,从而适应不同的项目结构。

app = Flask(__name__,template_folder='../fdf')

在本示例中,我们保持默认设置,不进行路径修改。

模板渲染.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模板渲染</title>
</head>
<body>
<p>你好</p>
<h3>How are you</h3>
</body>
</html>

模板渲染.py:

from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def index():
    return render_template('模板渲染.html')
if __name__ == '__main__':
    app.run()

启动Flask项目后,访问根路径/,系统将执行对应的视图函数,并渲染指定的HTML文件,最终显示效果如下。

GET和POST请求

在定义路由时,可以明确指定该URL接受的HTTP请求类型,以控制客户端的访问方式。

GET请求用于指示浏览器获取指定资源,服务器随后将对应的URL资源返回给浏览器。默认情况下,用户在地址栏输入URL并回车,即是在使用GET请求方式获取资源。例如:

@app.route('/',methods=["GET"])
def index():
    return render_template('模板渲染.html')

methods=["GET"]参数用于限定访问方式,若不显式指定,默认即为GET方式。

上述代码表示在访问根路径/时,仅接受get方式的请求。因此,直接在浏览器输入URL并按回车,属于get方式,可以正常访问。

如果将路由配置修改为:@app.route('/',methods=["POST"])

当我们尝试点击相关链接或访问时:

将会发现:

这是因为根路径/被限制只能使用POST方法访问。当然,开发者也可以将限制修改为同时允许GET和POST请求。

@app.route('/',methods=["GET","POST"])

POST请求主要用于向服务器提交数据,而非获取资源。当用户需要提交表单数据供服务器处理时,应使用POST方式。

首先,我们的html页面包含一个表单,要求用户填写数据。通过设置表单的action="http://localhost:5000/datahandle"属性,指定数据提交的目标地址为/datahandle页面进行处理。

test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>post请求</title>
</head>
<body>
    <form action = "http://localhost:5000/datahandle" method = "post">
         <table>
            <tr>
                <td>Name</td>
                <td><input type ="text" name ="username"></td>
            </tr>
            <tr>
                <td>Password</td>
                <td><input type ="password" name ="password"></td>
            </tr>
            <tr>
                <td><input type = "submit"></td>
            </tr>
        </table>
    </form>
</form>
</body>
</html>

接下来是处理该请求的Python文件:

from flask import Flask,render_template,request
app = Flask(__name__)
@app.route('/')
def index():
    return render_template('test.html')
#post数据到这个页面来处理,直接输入url是get方式访问,访问不了,这里限定了只能用POST方式访问
@app.route('/datahandle',methods=["POST"])
def handle():
    #获取提交到的数据
    name = request.form['username']
    pwd  = request.form['password']
    return f'name: {name}, password: {pwd}'
if __name__ == '__main__':
    app.run()

访问根路径时会渲染模板文件test.html。用户在表单中输入name和password后提交,数据将发送至/datahandle页面,由对应的视图函数handle()进行处理。关键在于如何获取表单数据,这需要借助request类来实现。

from flask import Flask,render_template,request
name = request.form['username']
pwd  = request.form['password']

实际上,Flask将表单中输入的数据封装为字典形式存储,通过print(request.form)可以查看该数据结构。

在表单中输入指定数据并提交后:

控制台将输出ImmutableMultiDict([('username', '123'), ('password', '456')])。

其中包含键值对username='123',password = '456'。

随后,使用request.form['username']即可获取key对应的value,或者使用request.form.get('username')方法同样可以获取数据。

提交后页面跳转至/datahandle,处理后的数据返回显示如下:

至此,成功获取了通过POST方式提交的数据。

到此这篇关于Flask模板渲染与Get和Post请求详细介绍的文章就介绍到这了,更多相关Flask模板渲染内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。