【问题标题】:Template Render Shortcuts not showing any result模板渲染快捷方式未显示任何结果
【发布时间】:2019-02-24 00:47:45
【问题描述】:

我正在尝试将我的 views.py 上的 pymongo 中的变量传递给模板。我没有收到任何错误,但我的代码也没有呈现到我的模板中。

views.py:

    def getTheA(request):
       for x in mycol.aggregate([{"$unwind":"$tags"},{'$match': {'tags.tag.name':'A A',}},{'$project': {'url': 1, 'AR': 1, 'tags.tag.name': 1, 'tags.variables': 1, '_id': 0}},]):
           theURLs = x['url']
           theNames = json.dumps(x['tags']['tag']['name'])
           theVars = json.dumps(x['tags']['variables'])
           context = {'theURLs' : theURLs}
       return render(request, 'templates/a.html', context)

我的 HTML 代码非常简单。我只是想打印一个网址列表:

   <ul>
      <li><b>URLSSSS</h1></b>
      {% for theURL in theURLs %}
         <li>{{ theURL.theURLs }} </li>
      {% endfor %}
   </ul>

我的结果:

  • URLSSSS

我是 Django 和 MongoDb 的新手,似乎无法弄清楚我哪里出错了。

【问题讨论】:

  • 你应该使用 double 大括号,所以{{ theURL.theURLs }}
  • 此外,for 循环相当奇怪:它将最后一个 (?!) 元素作为 theURLs 的值,等等。
  • @WillemVanOnsem,我的代码中确实有双花括号。我忘了在这里添加。我已经做出改变了
  • @newbierp 你能告诉我 theURL.theURLs 应该给你什么吗?我有一种感觉,你没有得到任何输出的原因是因为那是不正确的。另外,您能否对 html 进行全面检查并确保在您的初始元素之后没有一堆空的
  • 元素?
  • 我的检查没有显示空的
  • x['url'] 只包含一个 URL 列表,如下所示:www.google.com www.bing.com
  • 标签: python html django django-templates pymongo


    【解决方案1】:

    当模板中有{{ x.y }} 时,这意味着“对象x 的属性或字典键y”。

    因此,在您的模板中,当您有 {{ theURL.theURLs }} 时,这意味着“对象 theURL 的属性或字典键 theURLs

    theURL 已经在循环theURLs 中的每个对象。这些对象是否真的具有也称为theURLs 的属性?您的代码中没有任何内容表明是这种情况。

    【讨论】:

      【解决方案2】:

      好吧,看了你的代码半天,主要有两个问题。

      1. &lt;li&gt;{{ theURL.theURLs }}&lt;/li&gt; 应该只是 &lt;li&gt;{{ theURL }}&lt;/li&gt;
      2. 您的 for 循环严重混乱。在其当前形式中,您只获取您迭代的最后一个 URL。用这种方式修复它:

        def getTheA(request): theURLs = [] for yadayadayada: theURLs.append(x['url']) theNames = json.dumps(x['tags']['tag']['name']) theVars = json.dumps(x['tags']['variables']) context = { 'theURLs' : theURLs } return render(request, 'templates/a.html', context=context)

      【讨论】:

      • theURLs.append(x['url']) 不应该等于另一个变量吗?
      • 没有。您想将 theURLs 定义为一个列表,并且对于 for 循环中的每个项目,您都希望将该 url 附加到列表中。
      • 这是我的 HTML 代码:
        • URLSSSS-WHYYYY

        • {% for theURL in theURLs %}
        • {{ theURLs }}
        • {% endfor %}
        。我仍然没有得到任何网址
      • 首先,您应该在
      • 中打印theURL 而不是theURLs。但我有一种感觉,你的问题更多地在于你对 python、mongo 和 django 的理解。我建议从这个项目的各个部分开始,并确保在加入它们之前了解每个部分的工作原理。例如,硬编码一个列表并弄清楚如何将它们打印成 HTML,然后弄清楚如何将所有 url 打印到终端,然后将它们组合起来。
    • 我可以在终端打印它们。即使我将其更改为 {{ theURL }},我也没有得到结果
    • 猜你喜欢
      相关资源
      最近更新 更多
      热门标签