【问题标题】:How to update query in Django using AJAX? or is it possible?如何使用 AJAX 在 Django 中更新查询?或者有可能吗?
【发布时间】:2014-09-12 07:31:07
【问题描述】:

例如,我的模板中有这个:

{% for pins in data %}
    <option type="text" value="{{pins.clandpin}}">{{pins.clandpin}}</option>
{% endfor %}

在我看来.py:

def section_landpins(request):
    if request.method == "GET":
         section_id = request.GET['sectionid']
         m = ButuanMaps.objects.filter(ssectionid=section_id)
         data = serializers.serialize("json", m)
         return HttpResponse(data, content_type='application/json')

如何使用 AJAX 在模板中使用来自 view.py 的响应?

    $(document).ready(function(){
    $("#formsection").change(function() {
        $('#forminput').empty();
        $.ajax({
            url : "/sectionpins",
            type : "GET",
            dataType: "json",
            data : {
                'sectionid' : $(this).val(),
                'csrfmiddlewaretoken' : $("input[name=csrfmiddlewaretoken]").val()
            },
            success : function(data){
               ......
            },
            error: function (){
                alert('error');
            }
        });
    return false;
    });
 });

【问题讨论】:

  • 在您的成功/错误函数中,您有可以使用的数据/xhr 对象,请澄清问题
  • 我想从我的view.py 获取data,不要介意错误。我想在我的模板中更新我的查询。
  • 查询是指 HTML 表单(选项)吗?
  • 是的,用户将选择该部分,并且选项中的输出将基于所选选项值。

标签: python ajax django


【解决方案1】:

如果你将 from 渲染成这样的字符串,你可以将 HTML 直接放入表单中,

def section_landpins(request):
    if request.method == "GET":
        section_id = request.GET['sectionid']
        pins = ButuanMaps.objects.filter(ssectionid=section_id)
        html = render_to_string('pathToTemplate', {'pins ': pins })
        return HttpResponse(html)

获取呈现的 HTML 并使用选择器将其放入任何您认为合适的位置。

$(document).ready(function(){
    $("#formsection").change(function() {
        $('#forminput').empty();
        $.ajax({
            url : "/sectionpins",
            type : "GET",
            dataType: "json",
            data : {
                'sectionid' : $(this).val(),
                'csrfmiddlewaretoken' : $("input[name=csrfmiddlewaretoken]").val()
            },
            success : function(data){
                $('form').html(data);
            },
            error: function (xhr, textStatus, thrownError){
                alert("xhr status: " + xhr.statusText);
            }
        });
        return false;
    });
});

【讨论】:

  • $('form').html(data);,应该是$('#forminput').html(data);?在我的模板中,结构是什么?
  • 我假设你有一个围绕你的选项值的表单,这个表单应该有一个类/ID 作为示例#myForm,然后这个值应该在 jquery 函数中使用,如下所示:$(' #myForm').html(数据);因此,如果您的表单已经有一个 ID (#forminput),那么可以按照您的建议使用它。
  • OK...顺便说一句,这是我的 url.py,url(r'^sectionpins$','tbl.views.section_landpins'),部分选择选项在 index 中呈现,它位于单独的函数中。
【解决方案2】:

你可以测试一个请求是否使用了ajax

def section_landpins(request):
    if request.method == "GET":
         section_id = request.GET['sectionid']
         m = ButuanMaps.objects.filter(ssectionid=section_id)
         data = serializers.serialize("json", m)
         if request.is_ajax():
               return HttpResponse(data, content_type='application/json')
         else:
               rendre_to_response(........)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 2014-06-16
    相关资源
    最近更新 更多