随着互联网技术的不断发展,Web应用已经成为我们日常生活中不可或缺的一部分。Python作为一种功能强大且易于学习的编程语言,非常适合用来构建Web应用。在本文中,我们将通过示例代码展示如何使用Python的Flask框架构建一个简单的Web应用。
一、准备工作
在开始构建Web应用之前,我们需要安装Flask框架。Flask是一个轻量级的Web框架,适合快速开发和部署小型到中型的Web应用。你可以使用pip
命令来安装Flask:
pip install Flask
二、创建Flask应用
首先,我们创建一个简单的Flask应用,它将显示一个“Hello, World!”的欢迎页面。
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' if __name__ == '__main__': app.run(debug=True)
将上述代码保存为app.py
,并在命令行中运行它。你将看到Flask开发服务器启动,并监听在默认的5000端口上。打开浏览器并访问http://127.0.0.1:5000/
,你应该能看到“Hello, World!”的欢迎信息。
三、添加更多路由和视图函数
现在,我们将扩展应用,添加更多的路由和视图函数。例如,我们可以创建一个页面来显示当前时间。
from flask import Flask, render_template_string from datetime import datetime app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' @app.route('/time') def current_time(): current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') return render_template_string('<h1>Current Time: {{ current_time }}</h1>', current_time=current_time) if __name__ == '__main__': app.run(debug=True)
在这个例子中,我们添加了一个新的路由/time
,它调用current_time
视图函数。该函数获取当前时间,并使用render_template_string
函数将其渲染为一个简单的HTML页面。
四、使用模板
为了创建更复杂的页面,我们可以使用Flask的模板系统。Flask默认使用Jinja2模板引擎。以下是一个使用模板的示例:
首先,创建一个名为templates
的文件夹,并在其中创建一个名为index.html
的HTML文件。这是我们的模板文件。
<!DOCTYPE html> <html> <head> <title>Welcome to My Web App</title> </head> <body> <h1>Welcome to My Web App</h1> <p>Current Time: {{ current_time }}</p> </body> </html>
然后,我们修改Flask应用以使用这个模板:
from flask import Flask, render_template from datetime import datetime app = Flask(__name__) @app.route('/') def index(): current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') return render_template('index.html', current_time=current_time) if __name__ == '__main__': app.run(debug=True)
在这个例子中,我们使用render_template
函数来渲染index.html
模板,并将当前时间作为变量传递给模板。模板中的{{ current_time }}
将被替换为实际的时间值。
五、处理用户输入
Web应用通常需要处理用户输入。以下是一个处理用户输入的示例:
from flask import Flask, request, render_template app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'POST': name = request.form['name'] return render_template('result.html', name=name) else: return render_template('index.html') if __name__ == '__main__': app.run(debug=True)
在这个例子中,我们添加了对POST请求的处理。当用户提交表单时,我们从表单中获取用户的名字,并将其传递给result.html
模板进行显示。你需要在templates
文件夹中创建一个result.html
文件来显示结果。