面经分享(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 分钟前
数据可视化 —— 直方图
python·信息可视化·数据可视化
brzhang7 分钟前
告别『上线裸奔』!一文带你配齐生产级 Web 应用的 10 大核心组件
前端·后端·架构
程序员Bears7 分钟前
深入理解CSS3:Flex/Grid布局、动画与媒体查询实战指南
前端·css3·媒体·visual studio code
David凉宸19 分钟前
凉宸推荐给大家的一些开源项目
前端
袋鱼不重21 分钟前
Cursor 最简易上手体验:谷歌浏览器插件开发3s搞定!
前端·后端·cursor
hyyyyy!21 分钟前
《从分遗产说起:JS 原型与继承详解》
前端·javascript·原型模式
竹苓22 分钟前
从一个想法到上线,一万字记录我开发浏览器插件的全过程
前端
小桥风满袖23 分钟前
Three.js-硬要自学系列19 (曲线颜色渐变、渐变插值、查看设置gltf顶点、山脉高度可视化)
前端·css·three.js
zayyo23 分钟前
Vue.js性能优化新思路:轻量级SSR方案深度解析
前端·面试·性能优化
北溟鱼鱼鱼24 分钟前
跨域解决方案
前端