Django扩展内容坚持旧的获得结果

时间:2014-04-24 18:21:09

标签: python django

我精通python但对django和html来说很新 在保持先前查询的数据显示在同一页面上的同时包含其他数据的最佳方法是什么?

一些sql数据涉及在python中操作的大型数据集,所以当我只打算用1个额外的方法/查询重用旧视图时,我宁愿不重新计算新视图的所有内容。谢谢您的帮助。

这是一个非常简化的exampleurl / experiment1 /模板来说明我的问题。

{% extends "base.html" %}
{% load poll_extras %}
{% block content %}
{% block info %} #(loaded on default) {% endblock %}
{% block chart %} #(loaded with default values) {% endblock %}
{% block addinfo1 %}
    <select class="selectpicker" data-style="btn-info" onchange="if (this.value) window.location.href = this.value" method="get">
    <option value="?addinfo1=X">additional data X</option>
    <option value="?addinfo1=Y">addtional data Y</option>
    #(etc.) 
    </select> 
    {{if addinfo1}}     #(nothing loaded by default)
    #(display table) 
    {% endblock %}
{% block addinfo 2 %}
             <form class="addinfo search" action="/search/" role="search" method="get">
              <div class="form-group">
               <input type="text" class="form-control" placeholder="Search" name=q>
              </div>
              </form>
 {{if search_results }} #(nothing loaded by default) 
 {% endblock %}
{% endblock %}

即。有人加载实验1,选择addinfo = X,然后在附加的addinfo2字段中搜索 - 在显示对其查询的新响应时保留已加载的experiment1和addinfo1数据的最佳方法是什么(它确实需要双向工作,有人可以获取addinfo2数据,然后将addinfo1从= x更改为= y而不删除addinfo2数据)?

1 个答案:

答案 0 :(得分:0)

修改

根据您要执行此操作的问题:

显示包含一个或多个表单的页面。提交表单时,请保持旧的GET数据显示原样。

答案是AJAX

您使用ID创建表单,然后使用唯一网址创建view。使用AJAX将GET数据发送到URL,当结果返回时,您将处理它并在同一页面中显示它。

<input type="text" class="form-control" placeholder="Search" id="queryHolder">
<input type="button" id="mySearchButton">

<div id="searchResults">

</div>



<!-- make sure you included jQuery library -->

<script>

    $("#mySearchButton").click(function(){
        var query = $("#queryHolder").val();
        $.get("/search/", {q: query}, function(data){
            // the data came from the Django view.
            $("#searchResults").html(data)
        })
    })

</script>

当点击搜索按钮时,jQuery将发送一个永远不会重新加载页面的Ajax请求。 GET请求将被发送到/search/,其中包含一个名为q的参数,该参数等于输入值。

当数据从搜索视图作为HttpResponse()返回时,如果它是JSON则可以使用它,或者如果它是纯HTML则显示它

事实:

  • 如果您不需要触发操作,则不需要表单。