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

在Flask中一次渲染多个模板

阴宏爽
2023-03-14
问题内容

我正在做一个Flask应用程序。我有一个登录区域,一个博客区域。如果要获取用户的登录名,我将呈现登录模板。但这不会呈现必须显示在登录区域下方的博客模板。

我将尝试使其更加清晰:

{% block login %} {% endblock %}
blah blah
{% block blog_display %} {% endblock %}

现在我有一个login.html扩展它,并进入登录块。我有一个blogs.html进入blog_display。如何同时渲染两者?当我这样做时render_template(),我只能在login.html或之一上调用它blogs.html

请帮帮我。如果你需要,我会提供更多详细信息。


问题答案:

你可能会以错误的方式考虑布局。布局是模板中最通用的模板,而不是最复杂的模板。如果你只需要很少的独立功能,则按原样以及include在需要的地方编写它们。

也就是说,如果你想要这样的话:

----------------------------------
                  +--------------+
  Header          |   Login      |
                  +--------------+
----------------------------------

  Body Content (Blog)

而且你还想要一个独立的登录页面,如下所示:

----------------------------------

  Header

----------------------------------

  +--------------+
  |   Login      |
  +--------------+

然后include在需要的地方创建一个登录部分。


模板/部分/login.html

<form action="/login" method="post">
<!-- Your login goes here -->
</form>

templates / your_base.html

<!DOCTYPE html>
<html>
<head>
{% block head %}
{# 
Default HEAD content goes here 
with extra nested blocks for children to override 
if needed. 
#}
{% endblock head %}
</head>
<body>
<header>{% block header %}{% endblock header %}</header>
{# Note: This assumes we *always* want a header #}
{% block content %}{% endblock content %}
</body>
</html>

templates / login.html

{% extends "your_base.html" -%}
{% block content -%}
{% include "partials/login.html" %}
{%- endblock content %}

templates / blog.html

{% extends "your_base.html" -%}
{% block header -%}
{{ super() }}{# Render the default header contents here #}
{% include "partials/login.html" %}
{%- endblock header %}
{% block content -%}
{# Render your blog posts here #}
{%- endblock content %}


 类似资料:
  • 如何将 2 个 graphql 查询与 react-apollo-hooks 结合使用,其中第 2 个查询依赖于从第 1 个查询中检索到的参数? 我尝试使用如下所示的两个查询: 然而,当我运行我的项目时,react-hooks给我以下消息: " index.js:1437警告:React检测到Upgrade调用的挂钩顺序发生了变化。如果不修复,这将导致错误和错误。有关更多信息,请阅读“挂钩规则”

  • 6.1 渲染模板 一旦你拥有一个模版文件,你可以通过给一个map来给它传递数据。 map是一个变量及赋予的值的集合,模板使用它来得到变量的值,或者对于块标签求值。 它的渲染函数有一个可选的变量键值对map 通过 ctx.Render() 方法来渲染模板,例如: func (r *Render) Serve(ctx *faygo.Context) error { return ctx.Ren

  • 我有一个问题,我正在尝试将值设置为一个状态(选定的Pathway),关于通过 redux 设置的另一个常量(国家标签)。 设置“selectedPatway”后,我想在<code>中显示结果 一切都很好,但是当我刷新页面时,我在浏览器中得到一个“渲染的钩子比之前渲染的钩子多”。这是代码: 我浏览了整个互联网,我认为我已经正确地应用了所有东西(显然不是因为它不工作…)。 不有条件地调用钩子 在顶层使

  • 在此处输入图像描述我正在使用use效果挂钩来使用获取api,但它不起作用。当只有一个api时,它可以正常工作,但当我使用另一个api使用createData函数中的use效果挂钩获取数据时,它会出错。 我做了一些研究,我认为这是因为react中的组件重新渲染引起的一些问题,我试图搜索修复,但没有找到它,所以我发布它,如果有任何问题,请在评论中问我,我会给出更多的细节。

  • 我正在尝试为我的每个d3js元素使用reactjs组件。父组件绘制图形,子组件应在其周围绘制圆环。但是现在渲染函数将它们分开绘制。下面的代码显示了如何将图形svg追加到父组件中(在内部): 以下是父组件渲染函数的代码: 我认为子组件中存在一个问题,我尝试了选择(#容器),但它找不到它。所以我不得不使用将甜甜圈附加到一个单独的div: 我应该如何在子组件中更改它?是否需要更改父渲染函数?

  • 我有一个MathJax演示,可以在在线演示中查看。 在这个演示中,我在一个div中有一些Tex标记,由MathJax完美渲染。 但是,如果我通过单击按钮,然后单击按钮,以编程方式将一些Tex标记添加到上面的div中,那么它会导致重复渲染以前渲染的Math标记。这可以在以下视频中看到:数学被重复渲染 当点击按钮时,我所做的就是调用以下方法。divElement是通过编程向其添加Tex标记的div。