将项目循环到 Django 1.8 模板中

Loop through items into Django 1.8 template

我有这个方法:

def profile(request):
    parsedData = []
    if request.method == 'POST':
        username = request.POST.get('user')
        req = requests.get('https://api.github.com/users/' + username + '/repos') 
        jsonList = []
        jsonList=req.json()
        userData = {}
        for data in jsonList:
            userData['html_url'] = data['html_url']
            userData['created_at'] = data['created_at']
            userData['updated_at'] = data['updated_at']
            userData['forks_count'] = data['forks_count']
        parsedData.append(userData)
    return render(request, 'app/profile.html', {'data': parsedData})

这段代码会像这样 url githubtraining

如您所见,响应包含很多存储库,但是,并非每个 github 用户都有超过 1 个存储库。

无论如何,在我的 html 视图中我有这个:

  <div class="table-responsive">
      <table class="table table-bordered table-hover table-striped tablesorter">
          <thead>
          <tr>
            <th class="header"> Url <i class="icon-sort"></i></th>
            <th class="header"> Created at <i class="icon-sort"></i></th>
            <th class="header"> Updated at <i class="icon-sort"></i></th>
            <th class="header"> Forks count <i class="icon-sort"></i></th>
          </tr>
      </thead>
      <tbody>

      {% for key in data %}
          <tr>
              <td>{{ key.html_url }}</td>
              <td>{{ key.created_at }}</td>
              <td>{{ key.updated_at }}</td>
              <td>{{ key.forks_count }}</td>
          </tr>
      {% endfor %}

      </tbody>
      </table>
  </div>

然后会发生什么?好吧,现在,如果,例如,我查询 githubtraining 用户以查看它的回购,它只显示最后一个,关于那个和所有其他用户,那么,我在这里做错了什么?循环就在那里,我错过了什么?

您仅在 forloop 在您的视图中完成后才追加数据。您需要在每次迭代后附加它:

for data in jsonList:
    userData = {}
    userData['html_url'] = data['html_url']
    userData['created_at'] = data['created_at']
    userData['updated_at'] = data['updated_at']
    userData['forks_count'] = data['forks_count']
    parsedData.append(userData)

使用您当前的代码:

userData = {} 
for data in jsonList:
    userData['html_url'] = data['html_url']
    userData['created_at'] = data['created_at']
    userData['updated_at'] = data['updated_at']
    userData['forks_count'] = data['forks_count']
parsedData.append(userData)

新的 userData 覆盖循环中的前一个。当循环结束时,列表中只有一条记录。