将对象从模板传递给 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脚本

Django同时将视图中的var传递给两个模板

将 'dict' 对象从 Django 模板传递到 Angular 控制器 - 避免 jsonify 和解析

无法将参数从模板传递到 Django 视图

Django将对象列表传递给模板

Django将变量传递给模板