3

如何在不扩展的情况下渲染模板?我有简单的渲染器,我想在发现这个请求是 ajax 之后只渲染目标数据

我的模板:

{% extends "base.html" %}
{% load i18n %}

{% block extrahead %}
{% endblock extrahead %}


{% block content %}

  <div class="itemBg">
    <div class="itemTop">
      <div class="itemDown">

        <div class="rowContainer">
            <div class="show att">
                {{ msg }}
            </div>
        </div>

</div></div></div>
{% endblock %}

只有我想要这个在 ajax 请求的渲染响应中。

  <div class="itemBg">
    <div class="itemTop">
      <div class="itemDown">

        <div class="rowContainer">
            <div class="show att">
                {{ msg }}
            </div>
        </div>

</div></div></div>

这是我的渲染界面

from flask import current_app, render_template

def render(template, **context):
    """
    """
    return render_template(path(template), **context)
4

2 回答 2

4

您正在寻找null-master 后备技巧。由于request在 Jinja2 上下文中可用,如果您使用的库设置了适当的标头,您可以简单地执行以下操作:

{% if not request.is_xhr %}{% extends "base.html" %}{% endif -%}
{% load i18n %}
{% block content %}

  <div class="itemBg">
    <div class="itemTop">
      <div class="itemDown">

        <div class="rowContainer">
            <div class="show att">
                {{ msg }}
            </div>
        </div>

</div></div></div>
{% endblock %}
于 2012-07-12T19:55:22.497 回答
0

将 AJAX 所需的块放在单独的模板中。

当您收到 AJAX 请求时,只需呈现该新模板。对于非 AJAX 请求,请将其包含在扩展 base.html 的请求中。

于 2012-07-10T12:18:50.513 回答