【问题标题】:Getting table from Django POST request and displaying it in handsontable (read value in javascript)从 Django POST 请求中获取表格并在 handsontable 中显示(在 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,我不知道该怎么办? :/

【问题讨论】:

    标签: python django post handsontable


    【解决方案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 }}"。它解决了很多问题。谢谢帮忙!
    猜你喜欢
    • 2020-08-16
    • 2012-07-05
    • 2018-06-20
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 2014-08-04
    相关资源
    最近更新 更多