0

我已经 2 天了,我试图弄清楚如何做到这一点。我是新手,请尽可能详细的解释。

我在views.py中这样做

dict1 = simplejson.dumps(dict1)
return render_to_response('main_page.html', {
                    'js_testsuite':testsuite_dict,
                    'js_testset':js_testset,
                    'dict1':dict1})

在 main_page.html

{% if js_testsuite %}               
<select id="testsuites" name="testsuite" onchange="setOptions(document.selection.testsuite.selectedIndex);">
    {% for key, value in js_testsuite.items %}
            <option value={{ value }} name="testsuite">{{ key }}</option>
    {% endfor %}
</select>
{% endif %}

在包含函数 setOptions(value) 的 setoptions.js 中,我将选择框的选定索引传递给该函数,并且使用该值我必须设置第二个选择框,并且该选择框的数据必须来自上面给出的views.py。另外,我试着做

var value_from_django = {{ dict1 }};

我还缺少什么其他东西。您能否对此提供详细的解释。我已经尝试了 2 天。

  • 有没有一种方法可以将值从 django 视图直接绕过 django 模板传递给 javascript?
  • 我可以将 django 视图中的信息传递给 html 模板,然后再传递给 javascript 吗?

我指的 javascript 是一个简单的 javascript 而不是 jquery。

谢谢你的支持,

维奈

4

1 回答 1

1

您不能绕过模板将值传递给 javascript,除非您使用 ajax 调用来启动单独的请求,或者除非您执行一些非常不寻常的操作,例如将数据嵌入响应标头中(实际上不要这样做,这不是响应标头是给!)。响应,包括标题和正文(正文是模板生成的部分)是您的应用程序提供给客户端的信息的总和,因此除非您生成额外的请求并使用 ajax 获取额外的响应,你别无选择。

如果您不想这样做,那么通过模板将信息传递给 javascript 的选项基本上如下:

  • 使用内联标记,通过模板系统动态创建格式正确的 javascript。您拥有的示例行var value_from_django = {{ dict1 }};基本上就是我在这里谈论的内容,除了我不确定您是否可以像这样将 dict 从 django 传递到 javascript,因为模板中 dict 的 django 文本输出不太可能是完全正确的 javascript 变量声明格式。所以,相反,你可以...
  • 将您的数据转换为 JSON 并将其放入您的模板中,然后使用 javascript 进行处理。(这通常通过 ajax 调用来完成,但没有什么能阻止您将 JSON 数据直接注入初始模板。)
  • 或者用您想要的数据填充您的 HTML,然后使用 javascript 定位包含数据的 HTML 标记并解析数据。

如果您尝试传递整数等简单变量,则使用第一个或第三个选项可能最容易。如果您尝试传递更复杂的数据结构,例如字典,则使用 JSON 可能会更好(这就是它的用途!)

我想为您提供更详细和具体的说明,但为此您需要发布更多详细信息,说明您当前的方法到底出了什么问题以及您想要的功能是什么。

顺便说一句:如果在此页面上包含 jquery 并使用它而不是尝试使用基本的 javascript,那么您应该这样做。它会让你的生活变得更加轻松。

于 2012-10-28T09:36:28.500 回答