【一步一步教】Python Flask Web框架入门实战教程 Python是当下最受欢迎的编程语言之一,其优雅简洁的代码风格和强大的生态系统赢得了无数开发者的青睐。而在Python的Web框架中,Flask凭借着其轻量级、易用性和高灵活性,在不断壮大的Python生态圈中愈发受到欢迎。本文将从实战出发,一步一步教你如何使用Flask Web框架搭建一个简单的Web应用。 1. 环境准备 在开始之前,我们需要准备好Python的环境和必要的依赖库。确保你的电脑上已经安装了Python3和pip,并在命令行中执行以下命令安装Flask和其它必要的依赖库: ``` pip3 install flask pip3 install flask-wtf pip3 install flask-bootstrap pip3 install flask-login pip3 install flask-migrate ``` 2. 创建一个Flask应用 Flask应用的核心是一个Python模块,我们可以先在项目目录下创建一个app.py文件,并在其中导入Flask库: ```python from flask import Flask app = Flask(__name__) ``` 这里我们创建了一个名为app的Flask对象。__name__参数用来表示这个模块会作为整个Flask应用的主模块。 3. 创建一个简单的路由 路由用来指定浏览器访问应用时的URL对应哪个Python函数,接下来我们创建一个简单的路由,让应用返回“Hello, world!”: ```python from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, world!' ``` 这里我们使用了@app.route装饰器来指定路由。当用户访问应用的根路径时,Flask会调用hello函数并将其返回值显示在浏览器中。 4. 添加HTML模板支持 现在我们来让应用返回一个HTML页面。Flask支持使用Jinja2模板引擎来渲染HTML模板,一般我们把模板放在templates目录下。首先在项目目录下创建一个templates目录,并在其中创建一个index.html文件: ```html``` 这里我们使用了Flask-WTF库的表单处理功能。我们首先定义了一个名为form的变量,其值为一个FlaskForm对象。然后我们在HTML模板中使用{{ form.name() }}和{{ form.email() }}来渲染表单的输入框,同时也渲染了一个csrf_token隐藏字段,用来防止跨站请求伪造攻击。 接下来我们修改app.py文件,让路由处理表单提交,并在提交成功后重定向到一个结果页面: ```python from flask import Flask, render_template, redirect, url_for from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequired, Email app = Flask(__name__) app.config['SECRET_KEY'] = 'mysecretkey' class MyForm(FlaskForm): name = StringField('Name', validators=[DataRequired()]) email = StringField('Email', validators=[DataRequired(), Email()]) submit = SubmitField('Submit') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() if form.validate_on_submit(): return redirect(url_for('result', name=form.name.data, email=form.email.data)) return render_template('index.html', form=form) @app.route('/result/Hello, world! Hello, world!
``` 接下来我们修改app.py文件,让路由返回这个HTML模板: ```python from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') ``` Flask提供了render_template函数来渲染HTML模板。在路由中返回render_template('index.html')会自动读取templates目录下的index.html文件,并将其渲染后返回给浏览器。 5. 创建一个表单 现在我们来创建一个表单,让用户可以输入一些数据并提交到服务器。首先我们需要在HTML模板中添加一个表单,并使用Flask-WTF库来处理表单的验证和提交: ```htmlHello, Flask! Hello, Flask!
Welcome, {{ current_user.get_id() }}! Logout
{% else %}You are not logged in. Login
{% endif %} ``` 这里我们首先使用了Flask-Login库提供的current_user变量来判断当前用户是否已经登录,如果是,则显示欢迎信息和退出链接,否则显示登录链接。注意到我们使用了current_user.get_id()来获取当前登录用户的ID,因为我们的User类中没有实现__str__方法。 至此,我们已经完成了一个简单的Flask应用的搭建,其中包含了路由、HTML模板、表单处理、用户认证等多个功能。希望本文可以帮助你入门Flask,也希望你能在实际项目中应用Flask来开发更加高效、灵活、易用的Web应用。