Django:ajax 和请求

Posted

技术标签:

【中文标题】Django:ajax 和请求【英文标题】:Django: ajax & request 【发布时间】:2012-11-29 19:47:00 【问题描述】:

我英语说得不好?但我在 Django 中有问题。 我有模型:

class Model1(models.Model):
    model2 = models.ManyToManyField(Model2)
    #...
class Model2(models.Model):
    model3 = models.ForeignKey(Model3)
    #...
class Model3(models.Model):
    custom = models.CharField()

有观点

def simple(request, simple_id):
    if request.method == 'POST':
        if request.is_ajax():
            if 'delete' in request.POST:
                id3 = request.POST.get('delete', '')
                Model1.objects.get(id = simple_id).model2.filter(model3__id = id3).delete()

也就是说,当提交一个 name = "delete" 的表单时,Ajax 已经删除了属于 Model2 的所有具有相同值的字段 "model3" 的对象 这是一个模板:

<form action="" method="post" id="simple">% csrf_token %
<input type="submit" name="delete" id="simple_delete" value="">
</form>

js传过来的值:

$('.deletebutton').click(function()
    id = $(this).attr('data-id');
    $('#simple_delete').attr('value', id);
    $('#simple').ajaxForm();
    $('#simple_delete').click();
);

嗯,分别插件jquery.form.js也连接了

问题是这样的 - 如果没有 ajax 的提交都是正常的,它可以工作......如果使用 Ajax 是一个错误,例如不正确的 int 值......如何通过 Ajax 使其工作?

【问题讨论】:

您是否尝试在服务器端打印该值。要查看通过 Ajax 提交的值是什么? 没有。怎么做?我是初学者 【参考方案1】:

试试这个

$('.deletebutton').click(function()
     id = $(this).attr('data-id');
     $.ajax(function()
         type:"POST",
         url :"/your_url/",
         data:
              'id'=id,
         
    ).done(function(result)
         alert('your json object result render by view :'+result)
    )

我认为它有效, 我不明白你在做什么,即 $('#simple_delete').click(); 你能描述一下吗

在视图中

obj = Model1.objects.get(id = simple_id)
model2.objects.filter(model3__id = id3).delete()

我只是将单行查询分成两行,如果不工作 使用 .select_related()

【讨论】:

这是实现此目的的正确方法,我只想补充一点:您必须根据相对于删除视图的 urls.py 文件更改“/your_url/”。此外,如果该 url(如我所想)类似于“/delete//”,您可以传递一个空数据字典( data: ),因为您的 url 中已经有了您的 simple_id(并且您的视图似乎已配置为接受此)

以上是关于Django:ajax 和请求的主要内容,如果未能解决你的问题,请参考以下文章

ajax向Django前后端提交请求和CSRF跨站请求伪造

AngularJs 和 Django 的 Ajax 请求

ajax请求返回django.urls.exceptions.NoReverseMatch后Django反向和重定向

django之Ajax

在 Django 中返回 AJAX 请求的表单错误

来自 Django 模板的 Ajax JQuery 请求和响应