模板渲染未将pymongo聚合变量传递给模板

时间:2018-09-19 03:18:51

标签: python html django mongodb pymongo

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

views.py:

    def gettheAudit(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'])
            theVs = json.dumps(x['tags']['variables'])
            template = loader.get_template('templates/a.html')
            context = {
                 'theURLs' : theURLs,
                 'theNames' : theNames,
                 'theVs' : theVs,       
            }
       return HttpResponse(template.render(context, request))

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

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

我的结果:

  • URLSSSS
  • {URL中URL的%,%} {theURL.theURLs} {%endfor%}

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

1 个答案:

答案 0 :(得分:0)

将其缩小为您目前要查找的内容(并纠正模板中的某些语法),尝试使用列表理解:

from django.shortcuts import render

def gettheAudit(request):
    theURLs = [x 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}},])]
    return render(request, 'templates/a.html', {'theURLs': theURLs})

templates / a.html:

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