面经分享(Flask,轻量级Web框架)

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."。

python 复制代码
from flask import Flask

app = 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来渲染提交按钮。

python 复制代码
from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Email, Length

app = 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.data
        password = form.password.data
        # ... 在这里进行验证和处理逻辑 ...
        return f'Logged in with email: {email}'

    return render_template('login.html', form=form)

if __name__ == '__main__':
    app.run()

互联网大厂测开经历,目前担任测试开发负责人,每天分享互联网面经,如果你有测试相关的问题,欢迎咨询,海鲜市场【简历优化】、【就业指导】、【模拟/辅导面试】,已辅导20位以上同学拿到心仪offer

相关推荐
Mintopia1 分钟前
🧬 医疗Web场景下,AIGC的辅助诊断技术边界与伦理
前端·javascript·aigc
半桶水专家5 分钟前
父子组件通信详解
开发语言·前端·javascript
Watermelo6178 分钟前
从vw/h到clamp(),前端响应式设计的痛点与进化
前端·javascript·css·算法·css3·用户界面·用户体验
寻星探路12 分钟前
测试开发话题10---自动化测试常用函数(2)
java·前端·python
Moment14 分钟前
快到  2026  年了:为什么我们还在争论  CSS 和 Tailwind?
前端·javascript·css
鸢尾掠地平19 分钟前
Python中常用内置函数上【含代码理解】
开发语言·python
萧鼎24 分钟前
Python 图像处理利器:Pillow 深度详解与实战应用
图像处理·python·pillow
高洁0124 分钟前
大模型-详解 Vision Transformer (ViT)
人工智能·python·深度学习·算法·transformer
梵得儿SHI25 分钟前
Vue 核心语法详解:模板语法中的绑定表达式与过滤器(附 Vue3 替代方案)
前端·javascript·vue.js·插值语法·vue模板语法·绑定表达式·过滤器机制
江城开朗的豌豆28 分钟前
TypeScript枚举:让你的代码更有"选择权"
前端·javascript