1. Flask的核心特点
a. 轻量级:核心简洁,只提供了基本的功能,其他高级功能可以通过插件或扩展来添加。
b. 灵活性:允许开发者选择适合自己项目的组件和工具,没有强制的项目结构和设计模式。
c. 易于扩展:提供了丰富的扩展和插件生态系统,可以方便地添加新功能和集成其他工具。
2. Flask中如何处理路由和URL映射?
a. 使用装饰器@app.route来定义路由和URL映射。通过将URL路径和HTTP方法与相应的视图函数关联起来,Flask能够根据请求的URL找到对应的视图函数并执行。
b. 定义了两个路由:根路由 (“/”) 和 “/about”。每个路由都对应一个视图函数,当用户访问相应的URL时,Flask会调用对应的视图函数并返回结果。
c. 这个例子中,当用户访问根路由 (“/”) 时,视图函数 index() 返回 “Hello, World!”。当用户访问 “/about” 路由时,视图函数 about() 返回 “This is the about page.”。
from flask import Flaskapp = Flask(__name__)@app.route("/")
def index():return "Hello, World!"@app.route("/about")
def about():return "This is the about page."if __name__ == "__main__":app.run()
3. Flask表单验证和数据校验
a. 首先定义一个LoginForm类,继承自FlaskForm。在LoginForm中,定义两个字段email和password,并分别使用StringField和PasswordField定义对应的表单字段。使用validators参数来指定字段的验证规则,例如DataRequired()表示字段不能为空,Email()表示字段必须是合法的Email格式,Length(min=6)表示字段的长度至少为6。
b. 在login()视图函数中,首先实例化LoginForm类得到一个表单对象form。然后通过form.validate_on_submit()判断是否有POST请求并且数据验证通过。如果验证通过,可以从form对象中获取用户输入的数据,进行登录逻辑的处理。
c. 使用render_template函数将表单对象form传递给模板login.html,以便在模板中渲染表单。可以使用form.email、form.password等属性来渲染表单字段,也可以使用form.submit来渲染提交按钮。
from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Email, Lengthapp = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'class LoginForm(FlaskForm):email = StringField('Email', validators=[DataRequired(), Email()])password = PasswordField('Password', validators=[DataRequired(), Length(min=6)])submit = SubmitField('Submit')@app.route('/login', methods=['GET', 'POST'])
def login():form = LoginForm()if form.validate_on_submit():# 处理登录逻辑email = form.email.datapassword = form.password.data# ... 在这里进行验证和处理逻辑 ...return f'Logged in with email: {email}'return render_template('login.html', form=form)if __name__ == '__main__':app.run()
互联网大厂测开经历,目前担任测试开发负责人,每天分享互联网面经,如果你有测试相关的问题,欢迎咨询,海鲜市场【简历优化】、【就业指导】、【模拟/辅导面试】,已辅导20位以上同学拿到心仪offer