从 Django POST 请求中获取表格并在 handsontable 中显示(在 javascript 中读取值)

Posted

技术标签:

【中文标题】从 Django POST 请求中获取表格并在 handsontable 中显示(在 javascript 中读取值)【英文标题】:Getting table from Django POST request and displaying it in handsontable (read value in javascript) 【发布时间】:2016-04-08 04:23:27 【问题描述】:

我必须呈现易于修改的类似 Excel 的表格。我在 Django 中有带有 mysql 数据库的 Web 应用程序。当我在寻找解决方案时,我发现 Handsontable 看起来可以很好地解决我的问题。但现在我有一个问题:

我如何在提交表单后自动填写handsontable?我有一个表单,用户可以在其中选择几个选项并生成包含数据的表格。我在表格中有数据,我正在使用 POST 请求发送它。

if request.method == 'POST':
    form = TestForm(request.POST)

    if form.is_valid():
        ### ACCESSING DATA FROM DATABASE
        ### CREATING 2D TABLE

        return render_to_response('rendered.html', 'form' : form, 'my_data' : my_data ) 

之后,我想显示我的掌上电脑并用我的数据渲染它。对我来说是阿贾克斯做的吗?使用动态构建的handsontable 还是什么?

我试图从这里的第一个例子做一些事情 http://docs.handsontable.com/0.20.2/tutorial-data-sources.html

并覆盖 data1 但如果 my_data 是我的表单发送的变量...

data1 = request.POST["my_data"];

我无法像这样从 POST 访问数据(JS 它是客户端而不是服务器端,是吗?)

data1 =  my_data ;

这种方式可以在 Django 模板中使用,而不是在 <script> </script> 块中

除了在 POST['my_data'] 中放置带有 Ajax 数据请求的“加载数据”按钮之外,还有另一种方法吗?我刚开始使用 Django,我不知道该怎么办? :/

【问题讨论】:

【参考方案1】:

如果我的问题正确,最简单(但不是最灵活和安全)的解决方案是在 Django 模板中呈现 js 变量:

假设您的上下文变量 my_data 包含 Handsontable 所需的数据,请将其放入 your_template.html

<script type="text/javascript">
    var myData = " my_data ";
    // now your data is on the JS side.
</script>

【讨论】:

但是如果 JS 脚本会像这样在 django 模板中,我可以灵活地在 javascript 中获取 my_data 值(my_value 是 python 中的 POST 变量)吗?如果在 python 中有一个表,我必须将它保存为 JSON 并在 JS 端解析,我是对的吗? 对,你只需将初始化脚本放在你的 django 模板中。另一种方法(由 AngularJS 人员推荐)是在加载页面后发出 AJAX 请求,但在您的情况下这似乎是一种矫枉过正。存储数据的方式无关紧要,只要您可以将其转换为 JSON 并将其提供给您的 JS。 我还有几个问题,所以我会在评论中写给其他人:如果你有使用 unicode 的数据(这在 django 中很常见),不要忘记 "escapejs" -> var to_parse = " my_data | escapejs "。它解决了很多问题。谢谢帮忙!

以上是关于从 Django POST 请求中获取表格并在 handsontable 中显示(在 javascript 中读取值)的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 中的 AJAX POST 请求后重新加载模板

获取 Django POST 请求的 API

从 django 中的发布请求中获取数据非表单数据 [关闭]

Django表格,POST

无法从 Django request.POST 获取 POST 数据

如何在Django中接收JSON格式的数据