面经分享(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

相关推荐
杨运交1 天前
[024][Web模块]基于 AntiSamy 的 Spring Boot XSS 防护实践:从过滤器到反序列化的多层防御
前端·spring boot·xss
麻雀飞吧1 天前
2026年表格或图形化策略与脚本策略衔接:主流产品迁移路径
python
学点程序1 天前
HyperFrames:用 HTML 生成视频的开源渲染框架
前端·开源·html·音视频
zhangxingchao1 天前
AI 大模型核心五:从 Transformer、RAG 到 Agent 架构
前端·人工智能·后端
昭昭颂桉a1 天前
Tailwind CSS 完全指南 —— 从零到一,告别手写 CSS
前端·css
我材不敲代码1 天前
Python 文件与目录自动化实战:os、pathlib、shutil 从入门到精通
python·spring·自动化
weixin_468466851 天前
Transformer 模型新手入门与实战指南
人工智能·python·深度学习·机器学习·transformer·热力图·注意力机制
英俊潇洒美少年1 天前
Vue 生产环境打包:SourceMap、压缩、混淆、加密全解 + 最佳实践
前端·javascript·vue.js
小江的记录本1 天前
【JVM虚拟机】垃圾回收GC:四种引用类型:强引用、软引用、弱引用、虚引用(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试