1

我有一个包含多个表的表<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")

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

4

1 回答 1

0

你需要做:

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

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

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

它应该是:

def post(self, request, *args, **kwargs):
    name = request.POST['name']
于 2013-04-24T07:03:00.763 回答