Python作为一种功能强大且易于使用的编程语言,广泛应用于Web开发领域。Python的丰富生态系统中,有两个非常流行的Web框架:Flask和Django。本博文将详细介绍这两个框架的基础知识,并通过综合示例展示如何使用它们构建Web应用。
一、Flask基础
1.1 Flask简介
Flask是一个轻量级的Web框架,设计简单且易于扩展。Flask遵循WSGI标准,采用模块化设计,允许开发者根据需要选择和配置组件。
1.2 安装Flask
在安装Flask之前,确保你已经安装了Python。你可以使用以下命令来安装Flask:
pip install Flask
1.3 第一个Flask应用
创建一个名为app.py的文件,并添加以下代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Flask!"
if __name__ == '__main__':
app.run(debug=True)
运行应用:
python app.py
在浏览器中访问http://127.0.0.1:5000/,你会看到“Hello, Flask!”的输出。
1.4 路由和视图函数
Flask通过路由将URL映射到视图函数。视图函数处理请求并返回响应。
@app.route('/hello')
def hello():
return "Hello, World!"
你还可以使用URL变量:
@app.route('/user/<name>')
def user(name):
return f"Hello, {name}!"
1.5 模板渲染
Flask使用Jinja2作为模板引擎。创建一个templates目录,并在其中创建一个名为index.html的文件:
<!DOCTYPE html>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>{
{ message }}</h1>
</body>
</html>
修改视图函数以渲染模板:
from flask import render_template
@app.route('/')
def home():
return render_template('index.html', message="Hello, Flask!")
1.6 表单处理
Flask-WTF扩展提供了对表单处理的支持。首先安装Flask-WTF:
pip install Flask-WTF
创建一个表单类:
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
class NameForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
submit = SubmitField('Submit')
在视图函数中处理表单:
from flask import Flask, render_template, flash, redirect, url_for
from forms import NameForm
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
@app.route('/', methods=['GET', 'POST'])
def home():
form = NameForm()
if form.validate_on_submit():
flash(f'Hello, {form.name.data}!')
return redirect(url_for('home'))
return render_template('index.html', form=form
在模板中渲染表单:
<!DOCTYPE html>
<html>
<head>
<title>Home</title>
</head>
<body>
<form method="POST">
{
{ form.hidden_tag() }}
{
{ form.name.label }} {
{ form.name() }}
{
{ form.submit() }}
</form>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li>{
{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
</body>
</html>
1.7 数据库集成
Flask-SQLAlchemy扩展提供了对数据库的支持。首先安装Flask-SQLAlchemy:
pip install Flask-SQLAlchemy
配置数据库:
from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
定义模型:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return f'<User {self.username}>'
创建数据库:
python
>>> from app import db
>>> db.cre