Ajax与Django表单
我想在我的管理表单中添加Ajax功能,用来编辑一个模型。这个模型有一个列表字段。我希望通过Ajax来创建一系列输入框,并且每个输入框旁边都有添加和删除按钮。当用户点击“添加”或“删除”时,能够自动向服务器发送请求。
我现在遇到的问题是:这个小部件怎么知道它要操作的模型是什么?如果它不知道,那它怎么更新值呢?(我想给前端提供像 api/remove-list-item?pk=foo&item=bar
这样的链接。)
这让我觉得这样做可能不太符合Django框架的一般理念。也许我应该把这些值保存在本地,然后通过和其他数据一样的验证流程来发送它们。但我对怎么做到这一点还有点不确定。
2 个回答
0
在urls.py文件中,创建一个规则,像这样:
(r'^api/remove-list-item/(?P<id>\d+)$', 'yourApp.views.remove'),
然后在你的应用的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
0
我在做的事情和这个有点像(虽然不是在管理表单里)。我不太确定这样做是否被推荐……但对我来说确实有效。
我在模板中的一个html表单上设置了一个操作,这个操作会调用一个视图,主要任务就是更新数据库里的数据,然后返回一个“成功”的消息(或者我想让它返回的其他内容)。
在模板那边,我还使用了jquery表单插件,这个插件可以用来更新页面上的一个div,显示新的值。
再次强调,我不确定其他人是否会推荐这种做法,但我觉得这样做是有道理的……而且确实运行得很好。