将对象从模板传递给 django 视图(控制器)
Posted
技术标签:
【中文标题】将对象从模板传递给 django 视图(控制器)【英文标题】:Pass object to django view (controller) FROM template 【发布时间】:2014-03-26 19:09:00 【问题描述】:我对 django 还很陌生,但对于我想做的事情的最佳实践是什么感到有些困惑。
在我的网络应用中,当用户打开页面时,django 通过上下文提供一个 JSON 对象。该对象包含一个包含 100 个对象的数据库。
该页面的目的是允许用户从该列表中选择任意数量的对象,然后当他们单击“保存”时,用户的选择会保存在另一个数据库表中。
现在,一种选择是让每次用户添加或删除对象时,都会调用 django 视图,将对象添加到数据库中,然后通过HttpResponseRedirect(request.META.get('HTTP_REFERER'))
将用户返回到页面。
我不喜欢这个选项,因为它不仅需要在每次选择选项时写入数据库,而且每次都必须重新加载和重定向页面。这似乎效率低下。
所以,我想做的是在 javascript 中维护列表,然后仅在用户单击“保存”后才提供 django 查看整个列表。我知道这可以通过设置 URL 正则表达式来实现,但我宁愿不通过 URL 传递数据。
对执行此操作的最佳实践有何建议?
编辑:
解决了!将列表序列化为 json 对象,然后通过 ajax post 发送该对象:
$.ajax(
type: "POST",
url:"/save/",
data: new_json,
success: function()
alert('test')
,
error: function()
alert("Error");
)
【问题讨论】:
【参考方案1】:您可以设置 URL 并发布数据。无需通过 GET 传递。
【讨论】:
好吧,我想这很明显 :) 最终通过 ajax 调用视图。以上是关于将对象从模板传递给 django 视图(控制器)的主要内容,如果未能解决你的问题,请参考以下文章
Django将Python对象从视图传递到模板中的Javascript脚本