Python学习计划——11.1使用Flask创建一个简单的Web应用

Flask是一个轻量级的Python Web框架,适合快速开发小型Web应用。它易于学习和使用,并且具有丰富的扩展功能。以下是Flask基本知识的详细讲解和一个可运行的Python案例。

  1. 安装Flask

首先,需要安装Flask。可以使用pip进行安装:

python 复制代码
pip install Flask
  1. 创建一个简单的Flask应用

一个简单的Flask应用包含一个或多个路由,每个路由处理特定的URL和HTTP方法。以下是一个基本的Flask应用示例:

示例:创建简单的Flask应用

python 复制代码
from flask import Flask

# 创建Flask应用
app = Flask(__name__)

# 定义路由和视图函数
@app.route('/')
def home():
    return "Hello, Flask!"

# 启动应用
if __name__ == '__main__':
    app.run(debug=True)

将上述代码保存为app.py,然后运行它:

bash 复制代码
python app.py

然后打开浏览器,访问http://127.0.0.1:5000/,你将看到以下文本:

python 复制代码
Hello, Flask!
  1. 添加更多路由和视图函数

可以为应用添加多个路由,每个路由对应不同的URL和视图函数。

示例:添加多个路由

python 复制代码
from flask import Flask

app = Flask(__name__)

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

@app.route('/about')
def about():
    return "This is the About page."

@app.route('/user/<username>')
def user_profile(username):
    return f"Hello, {username}!"

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

访问以下URL:

  • http://127.0.0.1:5000/:显示"Hello, Flask!"
  • http://127.0.0.1:5000/about:显示"This is the About page."
  • http://127.0.0.1:5000/user/John:显示"Hello, John!"
  1. 模板渲染

Flask使用Jinja2模板引擎,可以动态生成HTML页面。模板文件通常存放在名为templates的目录中。

示例:使用模板渲染HTML页面

首先,创建一个名为templates的目录,并在其中创建一个名为index.html的文件:

html 复制代码
<!-- templates/index.html -->
<!DOCTYPE html>
<html>
<head>
    <title>Flask App</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

然后修改Flask应用代码:

python 复制代码
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', name="Flask")

@app.route('/about')
def about():
    return "This is the About page."

@app.route('/user/<username>')
def user_profile(username):
    return f"Hello, {username}!"

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

访问http://127.0.0.1:5000/,你将看到渲染后的HTML页面:

python 复制代码
Hello, Flask!
  1. 处理表单数据

可以使用Flask处理表单提交的数据。下面是一个简单的示例,演示如何处理表单数据并进行响应。

示例:处理表单数据

首先,在templates目录中创建一个名为form.html的文件:

html 复制代码
<!-- templates/form.html -->
<!DOCTYPE html>
<html>
<head>
    <title>Form Example</title>
</head>
<body>
    <h1>Submit a Form</h1>
    <form method="POST" action="/submit">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name">
        <button type="submit">Submit</button>
    </form>
</body>
</html>

然后修改Flask应用代码:

python 复制代码
from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', name="Flask")

@app.route('/about')
def about():
    return "This is the About page."

@app.route('/user/<username>')
def user_profile(username):
    return f"Hello, {username}!"

@app.route('/form')
def form():
    return render_template('form.html')

@app.route('/submit', methods=['POST'])
def submit():
    name = request.form['name']
    return f"Form submitted! Hello, {name}!"

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

访问http://127.0.0.1:5000/form,填写表单并提交,你将看到提交后的响应:

css 复制代码
Form submitted! Hello, [name]!
  1. 可运行的Python案例

下面是一个完整的Python程序,演示了如何使用Flask创建一个简单的Web应用,包括路由、模板渲染和表单处理。

python 复制代码
from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', name="Flask")

@app.route('/about')
def about():
    return "This is the About page."

@app.route('/user/<username>')
def user_profile(username):
    return f"Hello, {username}!"

@app.route('/form')
def form():
    return render_template('form.html')

@app.route('/submit', methods=['POST'])
def submit():
    name = request.form['name']
    return f"Form submitted! Hello, {name}!"

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

可以将上面的代码保存为app.py,并创建对应的模板文件(index.html和form.html),然后运行程序。这个案例综合了Flask Web开发的基本知识,帮助你理解和掌握这些操作。继续加油,学习Python会越来越有趣和有用!

相关推荐
言乐65 小时前
HTML视频审核模型
python·django·virtualenv·pygame·tornado
言乐66 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
yl45307 小时前
硫酸泄露处理生产商怎么选才够专业
大数据·人工智能·python
笨笨饿7 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
青柠之夏cc7 小时前
AI与教育:个性化学习助手让“因材施教“成为现实,但代价是隐私?
人工智能·学习
for_ever_love__8 小时前
机器学习入门——手写线性回归与梯度下降
人工智能·python·学习·机器学习·线性回归
打工仔折腾 AI8 小时前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
在猴站学算法8 小时前
(SQL注入学习)无回显的报错注入(Error-Based)
学习·网络安全·sql注入·ctf竞赛
I Am a robert girl8 小时前
当传感器学会“说谎“:拆解可靠性门控的稀疏惯性动捕融合
python·姿态估计·传感器融合·惯性动捕·imu传感器·可靠性门控·可穿戴计算
李航19838 小时前
AI定制柜建模,需要详细的建模规范和标准流程
人工智能·python·计算机视觉·ai·ai编程