【问题标题】:Using django variables in Javascript在 Javascript 中使用 django 变量
【发布时间】:2015-04-21 08:42:33
【问题描述】:

我的模型 lop 包含我用于不同目的的程序列表。我想使用名称字段作为 javascript 函数的参数。

我修改了一些 lops,所以修改后的版本在其名称的末尾有一个“ver2”。 Javascript 函数的作用是检查程序的后缀“ver2”。 javascript最初是从here找到的。

我读了一些类似的问题,其中一个说I need to serialize the object

编辑:views.py 的扩展视图,Javascript 控制台开始工作,现在包含在内。

在我的views.py(更新)

  from django.core import serializers
           .      
           .
           .
           .
  def loppage(request):

  jsondata = serializers.serialize('json', lop.objects.all(),fields=('name'));

  ## get programs
  data = []
  types = Type.objects.all()
  for type in types:
  data.append([type.title, type.script_set.all()])
  context = {'lop': Lop.objects.all(), 'cat': data, 'jsondata':jsondata}

  ## render list
  return render(request, 'loppage.html', context)

在我的模板文件中: Javascript/HTML (loppage.html):

<script>
function endsWithsuffix(progname, suffix) {
return progname.indexOf(suffix, progname.length - suffix.length) !== -1;} 

  </script> 

        .
        .
        .
        .
   {% for lop in type %}
      <p id="Options"><i>{{lop.options}}</i></p>
      <p id="Id"><a href="/ne/{{lop.id}}/">{{lop.name}}</a></p>

   <script type="text/javascript">
     if  (endsWithsuffix({{jsondata}}, 'ver2'))   {    //This I've tried with and without quotation marks, and with lop.name with and without quotation marks
         document.getElementById('Options').style.visibility = 'visible';
         document.getElementById('Id').style.visibility = 'visible';
    }

     else {
         document.getElementById('Options').style.visibility = 'hidden';
         document.getElementById('Id').style.visibility = 'hidden';
       }
    </script>
   {% endfor %}

但无论出于何种原因,脚本似乎都没有加载(它加载就好像脚本没有加载一样)。

正如 wardk 所建议的,我现在已经包含了我的 Javascript 控制台,可以在这里看到

SyntaxError: invalid property id loppage:56:28

这是在同一行上重复出现的相同错误,如下所示

调试器控制台亮点

if  (endsWithsuffix([{&quot;pk&quot;: 2, &quot;model&quot;: &quot;programs.lop&quot;,

我在这种方式上工作的时间比我应该做的要长,但我无能为力。帮助。

【问题讨论】:

  • 您在开始 &lt;script&gt; 标记之前缺少结束 {% endfor %}
  • @Brandon。抱歉,我的错字(我复制的时间不够长,但它在原始代码中)。修正了问题以匹配更正。

标签: javascript html json django


【解决方案1】:

您正在对 lop.objects.all() 的 json 表示形式应用 endsWithSuffix。你不应该为 {{lop.name}} 测试 endsWithSuffix 吗?

【讨论】:

  • 我最初使用 {{lop.name}} 进行了尝试,但在类似的问题中提到我需要先将其转换为 json,然后才能将其用于 javascript。不过,我尝试将 {{lop.name}} 与 json 变量一起使用,但它似乎仍然没有运行。
  • ^抱歉,更正:我再次尝试使用 {{lop.name}},同时将 json 变量保留在其他地方但没有骰子。
  • 我认为您需要在 {{lop_name}} 周围加上引号。
  • 也试过了,单引号和双引号。还是不行:(
  • 页面源中究竟出现了什么?你检查了javascript控制台吗? (developer.chrome.com/devtools/docs/console 在 chrome 中,firefox 也有类似的东西)
猜你喜欢
  • 2014-07-15
  • 2016-02-02
  • 1970-01-01
  • 2016-08-09
  • 2021-08-03
  • 1970-01-01
  • 2017-09-06
  • 2020-09-15
  • 2023-03-21
相关资源
最近更新 更多