【问题标题】:A general query about django / javascript patterns and how to best organize/encapsualte关于 django / javascript 模式以及如何最好地组织/封装的一般查询
【发布时间】:2017-11-27 17:53:33
【问题描述】:

我已被警告说这是主观的,可能会被关闭,但这似乎是一个我尚未解决的基本问题。

我目前正在 Django 中编写 webapps 并使用一些 JavaScript 来完成这个和那个。自然,有时我想让我的 JavaAcript 应用程序不知道我的 Django 模板的上下文,所以我一直这样做的方式是将 JS 硬编码到 .html 文件中。

<script>
  var my_var = "{{ my_var_from_context }}"

显然,这很丑陋,因为它迫使我将 JavaScript 代码保留在 .html 文件中。我想让我的 .js 文件分开并加载它。

显然有一些选项,例如编写一个函数,该函数接受可以在模板中捕获然后传递的参数。

var my_var = "{{ my_django_var }}"
myFunctionFromScript(my_var)

这是最好的方法吗?有更好的模式吗?其他人在做什么?

感谢您的帮助。

-乔

【问题讨论】:

  • 因为我真的不想在我的模板中使用js 代码,所以我通常将参数放在 HTML 对象的自定义数据属性中。例如。删除按钮将有一个 data-url 字段,其中包含删除视图的 url。然后我可以用 jQuery 读取值。
  • 你想将什么作为参数传递给 javascript?
  • 成为fips代码然后传递给美国人口普查API的州和县名称我希望js脚本在页面上绘制一个小部件,但具有适当的上下文数据(州,县)

标签: javascript python django design-patterns encapsulation


【解决方案1】:

使用 DTL(Django 模板语言),您几乎可以在 HTML 文件中进行任何通用逻辑编程。

我建议使用下面的方法,因为 django 语法与 Javascript 的对象文字表示法混淆的可能性较小。

var my_var = "{{ my_django_var }}";
//do not forget double quotes above
myFunctionFromScript(my_var);

还可以考虑将代码包装在{% verbatim %} and {% endverbatim %} 标记之间,以阻止 django 解释模板中的任何 JS 代码。

【讨论】:

  • 感谢您的评论。是的,我一直在做类似的事情,但对这种模式并不完全满意。只是好奇别人会怎么做。谢谢,
猜你喜欢
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 2013-08-06
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多