当前位置: 首页 > 面试题库 >

使用基本模板时如何避免重复设置上下文的过程?

祝高阳
2023-03-14
问题内容

使用时jinja2,基本的“骨架”模板通常会被许多其他模板扩展。

我的基本模板之一在上下文中需要某些变量,在我使用该基本模板的任何地方,我都必须重复设置过程。

例如,我可能需要从数据库中读取一些类别名称,并将它们呈现为标题中的列表,现在我必须在使用基本模板的任何地方编写此查询。

有什么好的方法可以避免在使用时重复此类代码jinja2


问题答案:

您可以将上下文处理器添加到您的应用程序或蓝图。这些为Jinja环境注入了额外的价值。这些不是任何视图的一部分,但是将在请求上下文中运行,因此您可以访问视图中通常会执行的所有操作。

@app.context_processor
def base_context():
    return {
        'author': 'davidism',
        'last_update': interesting_function()
        'headers': db.query(MyModel.category).distinct().all()
    }

蓝图上添加的处理器仅可用于从该蓝图上的视图渲染的模板。

传递给render_template函数的上下文将覆盖这些默认上下文值(如果它们具有相同的键)。



 类似资料:
  • 我想编写一个存储过程来将数据插入到表中,并检查是否已经存在相同的数据? 如果是,则异常抛出为已经存在。但我不知道应该在哪里添加异常。请帮忙。

  • 我使用for循环将学生详细信息添加到ArrayList。当我给第二个学生提供详细信息时,它会覆盖第一个数据。螺柱类 将数据添加到ArrayList的主类。 输出:第二个数据[2,2]后的实际输出辊数[1]。预期输出应为卷号: A1姓名: F1 L1性别:男性年龄: 11体育赛事:标枪 报名号:A2姓名:F2 L2性别:女年龄:14体育项目:100米跑 报名号:A3姓名:F3 L3性别:男性年龄:1

  • 我不断遇到需要通过映射或集合保存状态的解决方案。e、 g.创建一个返回在输入中找到的重复项的方法 我的Java8流解决方案,不幸的是,我正在使用哈希集进行过滤。我理解这并不“恰当”,因为这取决于州。没有州是建议还是硬性规定?这只是运行并行流时的问题吗?有人能推荐一种不使用哈希集的方法吗?

  • 我有一个简单的项目,该项目将个人信息提供给数据库(sqlite),现在我想避免插入重复值(按名称),我不能做什么?谢谢你们

  • 我在symfony 2.5中的区域设置路由遇到问题。假设我的默认语言是英语。我的示例路由是/user/register/。如果我要求它没有任何语言环境,它应该出现在英文翻译。如果我使用区域设置(例如/fr/user/register/)请求它,它应该与它一起出现。这可以通过以下方式完成: 现在我必须回答以下问题: 我如何简单地避免用户可以使用默认语言作为区域设置来调用路由?在我的示例中,英语是默认

  • 钱箱类: 商户类: 输入数据: 我的任务 计算每个商家的总金额并返回商家列表 我正在尝试使用Stream API解决这个任务。并编写了以下代码: 结果 但显然,流返回四个对象,而不是所需的两个对象。我意识到,地图(第二行)为每个cashBoxId创建了四个对象。而且我不知道如何通过进行过滤,也不知道如何获得没有重复的结果。