Python Flask快速搭建:GET/POST、HTML、静态资源与动态内容全攻略
前言
想不想用Python快速搭建一个Web服务器?用Flask框架,几行代码就能搞定! 这篇文章就带你一步步实现一个能处理GET/POST请求,返回自定义HTML页面,还能处理静态资源和动态内容的Web服务器。 别怕,超简单!
1. Flask安装与基本结构
首先,确保你安装了Python。 然后,用pip安装Flask:
pip install flask
安装完成后,创建一个app.py文件,这是我们Web应用的入口:
from flask import Flask, render_template, request
app = Flask(__name__)
# 路由和视图函数在这里定义
if __name__ == '__main__':
app.run(debug=True)
这段代码做了什么?
from flask import Flask, render_template, request:导入Flask类和一些常用的函数,比如render_template用于渲染HTML模板,request用于处理请求数据。app = Flask(__name__):创建一个Flask应用实例。app.run(debug=True):启动Web服务器,debug=True开启调试模式,方便开发。
2. 处理GET请求并返回HTML页面
现在,让我们定义一个路由,处理GET请求,并返回一个简单的HTML页面:
@app.route('/')
def index():
return render_template('index.html')
@app.route('/'):这是一个装饰器,将URL/绑定到index函数。 当用户访问网站根目录时,Flask会调用index函数。render_template('index.html'):这个函数会查找名为index.html的模板文件,并将其渲染成HTML字符串返回给浏览器。
接下来,在项目根目录下创建一个名为templates的文件夹,并在其中创建一个index.html文件:
<!DOCTYPE html>
<html>
<head>
<title>欢迎!</title>
</head>
<body>
<h1>你好,世界!</h1>
<p>这是一个简单的Flask应用。</p>
</body>
</html>
3. 处理POST请求
要处理POST请求,我们需要在HTML表单中使用POST方法,并在Flask中定义相应的路由:
@app.route('/submit', methods=['POST'])
def submit():
if request.method == 'POST':
name = request.form['name']
return render_template('result.html', name=name)
methods=['POST']:指定这个路由只处理POST请求。request.form['name']:从POST请求的表单数据中获取名为name的字段的值。
现在,我们需要创建两个HTML文件:form.html 和 result.html。
form.html:
<!DOCTYPE html>
<html>
<head>
<title>表单</title>
</head>
<body>
<form action="/submit" method="post">
<label for="name">姓名:</label>
<input type="text" id="name" name="name"><br><br>
<input type="submit" value="提交">
</form>
</body>
</html>
result.html:
<!DOCTYPE html>
<html>
<head>
<title>结果</title>
</head>
<body>
<h1>你好,{{ name }}!</h1>
<p>你提交了表单。</p>
</body>
</html>
别忘了,在app.py中添加访问form.html的路由:
@app.route('/form')
def form():
return render_template('form.html')
4. 处理静态资源
通常,Web应用需要提供静态资源,比如CSS文件、JavaScript文件和图片。 Flask默认会在名为static的文件夹中查找静态文件。
创建一个名为static的文件夹,并在其中创建一个style.css文件:
body {
font-family: sans-serif;
}
h1 {
color: navy;
}
要在HTML中使用这个CSS文件,可以使用url_for函数:
<!DOCTYPE html>
<html>
<head>
<title>欢迎!</title>
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
<h1>你好,世界!</h1>
<p>这是一个简单的Flask应用。</p>
</body>
</html>
5. 处理动态内容
Flask可以使用Jinja2模板引擎来动态生成HTML内容。 在上面的例子中,我们已经使用了render_template函数来传递变量到HTML模板中。
例如,在result.html中,我们使用了{{ name }}来显示用户提交的姓名。
6. 完整代码
下面是完整的app.py代码:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/form')
def form():
return render_template('form.html')
@app.route('/submit', methods=['POST'])
def submit():
if request.method == 'POST':
name = request.form['name']
return render_template('result.html', name=name)
if __name__ == '__main__':
app.run(debug=True)
7. 运行Web应用
保存所有文件后,在命令行中运行app.py:
python app.py
然后,在浏览器中访问 http://127.0.0.1:5000/,你就可以看到你的Web应用了!
总结
通过这篇文章,你学会了使用Python Flask框架搭建一个简单的Web服务器,包括处理GET/POST请求,返回自定义HTML页面,处理静态资源和动态内容。 这只是一个入门示例,Flask还有很多强大的功能等你来探索! 比如,数据库集成、用户认证、API开发等等。 赶紧动手试试吧!