Day16-6【Web开发】Python UDP教程:用Flask处理Web开发
想象一下,当你初次接触Python Web开发时,你看到了WSGI的接口文档,心中满是“我终于可以做Web应用了!”的喜悦。然而,直到你遇到HTML页面时,一切就变得不那么美好了。如果你尝试直接在Python字符串里拼接HTML,面对几千行的HTML,你会明白:这是一场噩梦。
想象一下,当你初次接触Python Web开发时,你看到了WSGI的接口文档,心中满是“我终于可以做Web应用了!”的喜悦。然而,直到你遇到HTML页面时,一切就变得不那么美好了。如果你尝试直接在Python字符串里拼接HTML,面对几千行的HTML,你会明白:这是一场噩梦。
有句老话叫做:“不懂前端的Python工程师不是好产品经理。” 在Web开发中,最复杂的部分往往是生成正确的HTML页面。而且,HTML不仅需要正确,还要有CSS来美化,再加上JavaScript来增强互动效果。试着把这些都写在Python的字符串里?没可能。
于是,模板技术横空出世,帮我们解决了这个问题。
一、模板技术:Python工程师的救命稻草
在Python里,模板技术就像是魔法。你准备一个基本的HTML框架,在里面插入变量和控制指令,然后用数据填充它们,最终返回给用户一份整洁的HTML页面。
MVC模式(Model-View-Controller)就是为了让你能清晰地分离逻辑与页面。让我们通过Flask来看看这一切如何实现。
1.1 MVC是什么鬼?
简单来说,MVC是一种设计模式,用来让代码更好地分离和管理:
-
Model:负责处理数据,通常就是你从数据库中获取的数据。
-
View:负责展示页面,用模板来生成HTML。
-
Controller:负责逻辑处理,它接收请求、调用Model,最终决定返回什么View。
而Flask中,Python的函数是Controller,负责处理业务逻辑;包含变量的模板是View,最终生成HTML页面;Model则是你传递给模板的数据,通常是个字典,Flask会自动处理它。
1.2 用Flask玩转MVC:一行代码搞定Web App
先装个Flask:
$ pip install flask
然后,我们开始编写app.py
:
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def home():
return render_template('home.html')
@app.route('/signin', methods=['GET'])
def signin_form():
return render_template('form.html')
@app.route('/signin', methods=['POST'])
def signin():
username = request.form['username']
password = request.form['password']
if username == 'admin' and password == 'password':
return render_template('signin-ok.html', username=username)
return render_template('form.html', message='Bad username or password', username=username)
if __name__ == '__main__':
app.run()
1.3 Flask是如何帮你省心的?
Flask用render_template()
函数来渲染模板。你只需要将数据传给模板,Flask就能自动替你处理View的部分。你再也不需要自己在Python代码中拼接HTML。
1.4 让我们搞几个模板文件
-
home.html:首页的模板:
<html>
<head>
<title>Home</title>
</head>
<body>
<h1 style="font-style:italic">Home</h1>
</body>
</html>
-
form.html:登录表单的模板:
<html>
<head>
<title>Please Sign In</title>
</head>
<body>
{% if message %}
<p style="color:red">{{ message }}</p>
{% endif %}
<form action="/signin" method="post">
<legend>Please sign in:</legend>
<p><input name="username" placeholder="Username" value="{{ username }}"></p>
<p><input name="password" placeholder="Password" type="password"></p>
<p><button type="submit">Sign In</button></p>
</form>
</body>
</html>
-
signin-ok.html:登录成功后的模板:
<html>
<head>
<title>Welcome, {{ username }}</title>
</head>
<body>
<p>Welcome, {{ username }}!</p>
</body>
</html>
注意:这里我们使用了{{ ... }}
来表示变量,{% ... %}
来表示控制结构,比如条件判断和循环。
1.5 模板的文件结构
你需要将这些模板放在Flask默认的templates
文件夹下,结构大致如下:
/myapp
/templates
home.html
form.html
signin-ok.html
app.py
1.6 运行你的Web App
启动Flask应用:
$ python app.py
然后,在浏览器访问http://127.0.0.1:5000/
,你就能看到自己搭建的首页啦!输入登录表单,试试登录成功或失败的效果。
1.7 模板的超能力:轻松做动态页面
Jinja2模板支持条件判断、循环等操作,让你在模板中写逻辑就像写Python一样。
举个例子,假设你要渲染一个带页码的分页系统:
{% for i in page_list %}
<a href="/page/{{ i }}">{{ i }}</a>
{% endfor %}
如果page_list = [1, 2, 3, 4, 5]
,Jinja2会自动替你生成5个超链接。
二、常见的模板引擎
除了Flask的默认模板引擎Jinja2,还有其他常见的模板引擎:
-
Mako:用
<% ... %>
和${xxx}
来表示变量和控制结构。 -
Cheetah:与Mako类似。
-
Django:Django自带的模板引擎,使用
{% ... %}
和{{ xxx }}
。
* 小结:Python开发Web不再是噩梦
有了MVC模式和模板技术,我们成功地把HTML和Python代码分离开来。不仅如此,模板也让修改页面变得异常简单,修改后只要刷新浏览器,前端代码的调试效率直线上升。
不管你是初学者还是有经验的Python开发者,Flask的模板技术都能帮你大幅提高Web开发效率。接下来,赶紧来动手尝试吧,Python Web开发世界,等你来征服!

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)