【问题标题】:CSS elements on django template with ajax带有ajax的django模板上的CSS元素
【发布时间】:2014-08-02 13:12:06
【问题描述】:

使用下面的 Django 模板渲染具有 CSS 样式的字典:

<div id="div_unkown_txt">
{% for k, v in unkown.items %}
    <div>
    <span class='personal_word'>{{k}}</span> : {{v.2}}
    </div>
    <div class='dt'>{{v.1}}</div>
    <div>{{v.0|safe}}</div> 
{% endfor %}
</div>

我还需要用ajax回调更新div,所以我写了类似的函数unkown_html():

function unkown_html(k, v){
    return "<div><span class='personal_word'>" + k + "</span> : " + v[2] + "</div>" +
           "<div class='dt'>" + v[1] + "</div>" +
           "<div>" + v[0] + "</div>";
}
function repeat_word(w){
    $.ajax({
        type: "POST",
        url: '../word_repeat',
        data:{w:w}, 
        success: function(data){
            var txt='';
            $.each(data, function(k, v){ 
                txt += unkown_html(k,v);
            });
            $("#div_unkown_txt").html(txt);
        }
    });
}

这两个函数是一样的,因为ajax更适合热插拔渲染我想知道如何在模板渲染中调用unkown_html()?

【问题讨论】:

    标签: javascript jquery css ajax django


    【解决方案1】:

    很遗憾,您的问题有点难以理解。我想您是在问如何在响应 Ajax 调用而重新呈现页面的一部分时减少模板代码和 Javascript 之间的重复。

    我通常处理这个问题的方式是让 Ajax 调用本身返回呈现的 HTML,而不是 JSON。因此,您将该模板片段提取到它自己的文件中,您将 {% include %} 提取到普通模板中,但直接从 Ajax 视图中调用。然后 Javascript 只需将接收到的 HTML 插入页面,而不是从头开始重新渲染任何内容。

    【讨论】:

      猜你喜欢
      • 2020-07-23
      • 2021-03-22
      • 2018-01-14
      • 2010-09-17
      • 1970-01-01
      • 2019-07-03
      • 2011-07-07
      • 2019-08-06
      • 1970-01-01
      相关资源
      最近更新 更多