flaskweb开发视图与装饰器|“朝闻道”知识分享大赛

简单凯凯 2024-11-30 17:33:13

这是我参加朝闻道知识分享大赛的第12篇文章

Flask 视图与装饰器笔记

视图函数的自定义

基本用法

def list(): return "list-----" app.add_url_rule('/list/', endpoint="zhiliao", view_func=list)

  • app.add_url_rule 用于手动添加 URL 规则。

  • endpoint 参数用于指定端点名称,方便在模板中使用 url_for。

视图类

基本样式

from flask import views

class New(views.View):
    def dispatch_request(self):
        return render_template("news.html")

app.add_url_rule('/news/', view_func=New.as_view("news"))
  • views.View 是 Flask 提供的基类,用于创建基于类的视图。

  • dispatch_request 方法用于处理请求。

  • as_view 方法将类转换为视图函数。

使用类的构造函数

class Base(views.View):
    def __init__(self):
        super(Base, self).__init__()
        self.context = 'hh'

class A(Base):
    def dispatch_request(self):
        return self.context + '1'

class B(Base):
    def dispatch_request(self):
        return self.context + '2'

app.add_url_rule('/a/', view_func=A.as_view("a"))
app.add_url_rule('/b/', view_func=B.as_view("b"))
  • 通过构造函数初始化共享的属性。

  • 子类继承基类并实现 dispatch_request 方法。

基类与派生类的使用(虚函数)

class Josondata(views.View):
    def get_data(self):  # 虚函数
        return ''

    def dispatch_request(self):
        return self.get_data()

class List(Josondata):
    def get_data(self):
        node = {
            "name": "lazi",
            "age": 18
        }
        return node

app.add_url_rule('/js/', endpoint="jj", view_func=List.as_view('js'))
  • 基类定义虚函数 get_data。

  • 派生类重写 get_data 方法以提供具体实现。

GET 与 POST 类

class Form(views.MethodView):
    def get(self, error=None):
        return render_template("index.html", error=error)

    def post(self):
        password = request.form.get("password")
        username = request.form.get("username")
        if password == "1" and username == "2":
            return "登录成功"
        else:
            return self.get(error=True)

app.add_url_rule("/login/", view_func=Form.as_view("Form"))
  • views.MethodView 支持不同的 HTTP 方法(如 GET、POST)。

  • 根据请求方法调用相应的方法。

装饰器

函数使用装饰器

@app.route('/')
@login_request
def hello_world():
    return "hello world"
  • 装饰器 login_request 用于在访问视图函数前进行权限检查。

类中加装饰器

class New(views.View):
    decorators = [login_request]

    def dispatch_request(self):
        return render_template("news.html")

app.add_url_rule('/news/', view_func=New.as_view("news"))
  • decorators 属性用于在类级别添加装饰器。

装饰器实现

from functools import wraps

def login_request(func):
    @wraps(func)
    def inner(*args, **kwargs):
        name = request.args.get("name")
        if name:
            return func(*args, **kwargs)
        else:
            return "请先登录"
    return inner
  • wraps 装饰器用于保留原始函数的元数据。

  • login_request 装饰器检查请求参数 name,如果存在则继续执行原函数,否则返回提示信息。

...全文
66 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文针对基于输入并联输出串联(IPOS)结构的双三相LLC谐振变换器,系统研究其在宽增益工况下的谐振参数优化方法与启动过程中冲击电流的抑制策略。通过Simulink平台构建系统仿真模型,结合变频控制与电压电流双闭环调控策略,深入分析变换器在全范围软开关条件下的工作边界、模式切换动态响应及多模式运行稳定性。研究提出优化谐振腔参数设计以扩展电压增益范围,并引入降频软启动、星形耦合自均流等机制有效抑制上电瞬间的电流冲击,提升系统启动可靠性与运行效率。同时探讨了变频调压、多模式切换控制及交错并联带来的均流优势,为高增益、大功率密度DC-DC变换器的设计提供了完整的建模、控制与优化解决方案; 适合人群:具备电力电子与电力系统基础知识,从事新能源变换器、高频开关电源、电动汽车充电系统、航空航天电源等相关领域研究的研究生、科研人员及工程技术人员; 使用场景及目标:①为高电压增益、高效率、高功率密度DC-DC变换器的谐振参数设计与控制策略制定提供理论依据与仿真验证手段;②指导LLC谐振变换器在新能源并网、车载充电机、直流微网等应用场景中的工程实现与性能优化;③支撑高水平学术论文(如IEEE期刊)的复现、科研项目关键技术攻关及系统级仿真平台搭建; 阅读建议:建议结合Simulink仿真实例,细致理解谐振参数设计准则、软开关实现条件、冲击电流形成机理及其抑制方法的有效性验证过程,重点关注模式切换过程中的动态响应特性与闭环控制参数整定规律,宜配合相关文献进行对比分析以深化对系统稳定性和控制策略优越性的认知。
内容概要:本文详细介绍了使用CAXA3D软件进行支座类零件三维建模的全过程,采用“草图拉伸构建基体→添加凸台→加强筋→切除凹槽与安装孔”的建模思路。通过分步操作讲解,涵盖从创建底座草图、拉伸成实体、添加长方体凸台、使用加强肋图素增强结构强度,到利用孔类图素完成顶部矩形凹槽和中部弧形槽口的切除,最后通过布尔合并形成完整零件。文中还列出了关键尺寸参数,并针对常见建模问题提供了具体解决方案,如长圆孔未切除、加强肋无法生成、孔类图素不减料及零件未合并等问题的原因分析与处理方法。; 适合人群:具备基本三维建模基础,从事机械设计、产品结构设计等相关工作的工程师或工科专业学生;尤其适合正在学习CAXA3D软件操作的初学者; 使用场景及目标:①掌握CAXA3D中基于草图拉伸与图素库组合的高效建模流程;②理解加强肋、孔类图素等智能图素的正确使用方式;③学会解决建模过程中常见的草图封闭性、实体吸附与布尔运算问题;④为后续工程图出图和实际零件设计打下基础; 阅读建议:建议读者结合CAXA3D软件同步实操,按照文档步骤逐步练习,重点关注草图封闭性、图素吸附机制和最终布尔合并的操作细节,以提升建模成功率与效率。
内容概要:本文系统研究了基于直流母线电压外环与电流内环协同调节的飞轮储能网侧变流器并网控制方法,通过Simulink搭建完整的仿真模型,深入剖析双闭环PI控制策略的设计原理与实现过程。重点阐述电压外环维持直流侧电压稳定、电流内环实现并网电流精确跟踪的协同工作机制,详细讨论控制器参数设计、坐标变换(dq变换)、锁相环技术及PWM调制等关键环节,验证该控制方案在动态响应速度、稳态精度和并网电能质量方面的优良性能,适用于飞轮储能参与电网频率调节、功率支撑等实际应用场景。; 适合人群:具备电力电子、自动控制理论及新能源系统基础知识,从事储能系统、电力变换器控制研究的研究生、科研人员及电气工程领域的工程技术人员。; 使用场景及目标:① 掌握飞轮储能系统网侧变流器的并网控制架构与工作原理;② 学习并掌握双闭环PI控制器的设计思路与参数整定方法;③ 借助Simulink仿真平台复现典型控制策略,支撑科研论文撰写、项目开发或教学实践; 阅读建议:建议结合文中提及的相关研究内容(如机侧控制、功率平滑策略等)进行系统性学习,并下载配套仿真资源进行实操演练,通过调整控制器参数、设置不同工况,深入理解系统动态响应特性与控制逻辑的内在联系。

1,043

社区成员

发帖
与我相关
我的任务
社区描述
中南民族大学CSDN高校俱乐部聚焦校内IT技术爱好者,通过构建系统化的内容和运营体系,旨在将中南民族大学CSDN社区变成校内最大的技术交流沟通平台。
经验分享 高校 湖北省·武汉市
社区管理员
  • c_university_1575
  • WhiteGlint666
  • wzh_scuec
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎各位加入中南民族大学&&CSDN高校俱乐部社区(官方QQ群:908527260),成为CSDN高校俱乐部的成员具体步骤(必填),填写如下表单,表单链接如下:
人才储备数据库及线上礼品发放表单邀请人吴钟昊:https://ddz.red/CSDN
CSDN高校俱乐部是给大家提供技术分享交流的平台,会不定期的给大家分享CSDN方面的相关比赛以及活动或实习报名链接,希望大家一起努力加油!共同建设中南民族大学良好的技术知识分享社区。

注意:

1.社区成员不得在社区发布违反社会主义核心价值观的言论。

2.社区成员不得在社区内谈及政治敏感话题。

3.该社区为知识分享的平台,可以相互探讨、交流学习经验,尽量不在社区谈论其他无关话题。

试试用AI创作助手写篇文章吧