【问题标题】:Ajax and Django formsAjax 和 Django 表单
【发布时间】:2011-06-10 14:52:23
【问题描述】:

我想将 Ajax 添加到我的管理表单中以编辑模型。该模型有一个列表字段。我希望 Ajax 创建一个带有添加和删除按钮的输入列表,当用户单击“添加”或“删除”时自动回调服务器。

我坚持的是:小部件如何知道支持模型是什么?如果它不知道,它如何更新值? (我想向前端提供像api/remove-list-item?pk=foo&item=bar 这样的网址。)

这让我觉得这样做不符合一般的 Django 框架理念。相反,也许我应该将值保存在本地,并通过与其余数据相同的验证过程发送它们。但我有点不确定如何做到这一点。

【问题讨论】:

    标签: javascript python ajax django


    【解决方案1】:

    我正在做与此类似的事情(尽管不是以管理员形式)。我不确定这是否是推荐的做事方式……但它似乎对我有用。

    我在模板中的 html 表单上设置了一个操作,该操作调用一个视图,该视图基本上具有更新数据库中的数据并返回“成功”(或我碰巧希望它返回的任何内容)的唯一任务。

    在模板方面,我还使用the jquery form plugin,我用它来更新 div 以显示新值。

    同样,我不确定这是否是其他人推荐的方式,但我确实觉得这似乎是有道理的......而且它似乎工作得很好。

    【讨论】:

      【解决方案2】:

      在 urls.py 中,制定如下规则:

      (r'^api/remove-list-item/(?P<id>\d+)$', 'yourApp.views.remove'),
      

      然后在 yourApp.views 中有类似的内容:

      from django.shortcuts import get_object_or_404, redirect
      
      def remove(request, id):
        dbObj = get_object_or_404(YourModel, id=id)
        dbObj.active = False # Or whatever you want to do with the object
        dbObj.save()
      
        return redirect('some-view')
      

      然后您可以进行类似 /api/remove-list-item/123 的查询

      【讨论】:

        猜你喜欢
        • 2012-03-14
        • 2021-08-24
        • 2014-04-11
        • 1970-01-01
        • 2012-07-28
        • 2018-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多