【问题标题】:Post selected rows with jquery to a Django 1.5 view使用 jquery 将选定的行发布到 Django 1.5 视图
【发布时间】:2013-04-17 14:20:54
【问题描述】:

我有一个包含多个 <tr> 的表,每个表都有一个 PK 作为 ID。我打算将这些<tr> 发布到 Django 1.5 视图,但我不知道如何正确发送数据。

我已经制作了这个 javascript 函数,它发布成功,但我不知道如何发送 selected_rows 的 id,以及如何在基于类的 Django 视图中检索它们。

function update() {
    var selected_rows = $(".ui-selected");
    $.ajax({
        type: "POST",
        url: "/confirm/",
        data: { name: "selected_rows" },
        success: function(data) {
            selected_rows.addClass('success');
        }
    });
}

我猜 Django 视图类似于

class ConfirmView(TemplateView):
    def post(self, queryset=None):
        return HttpResponse("POST")

我也试过

function update() {
    var selected_rows = $(".ui-selected");
        selected_rows.each(function() {
            $.ajax({
            type: "POST",
            url: "/confirm/",
            data: { id: $(this).attr("id") },
            success: function(data) {
                $(this).addClass('success');
            }
        });
    });
}

class ConfirmView(TemplateView):
    def post(self, queryset=None):
        if self.request.POST['id']:
            ModelName.objects.filter(pk=self.request.POST['id']).update(is_confirmed=True)
        return HttpResponse("POST")

但我想最好处理同一数据库查询中的所有行,而不是像上面那样拆分它们。但是如果我像上面那样拆分它们,我可以检查它们是否更新成功,所以也许这样更好?

【问题讨论】:

    标签: ajax django post view selectable


    【解决方案1】:

    你需要做的:

    data: { name: selected_rows }  //Do not put selected_rows in quotes
    

    还有你为什么在这里使用 TemplateView,它没有给你任何优势。你只需要创建一些东西并发送一个 ajax 将处理的响应。您可以在此处仅使用函数视图。

    如果您使用基于类的视图,您的post 签名有一个错误:

    应该是:

    def post(self, request, *args, **kwargs):
        name = request.POST['name']
    

    【讨论】:

      猜你喜欢
      • 2011-12-06
      • 2020-05-21
      • 1970-01-01
      • 2011-05-26
      • 2013-04-07
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      相关资源
      最近更新 更多