Django在渲染视图中使用上下文创建

时间:2016-03-25 04:23:10

标签: django

我正在渲染一个html模板的视图。我没有得到任何错误,但数据不会在页面上循环。

我有这个工作但是一旦我开始使用模板我遇到了问题。所以我知道它有效我只是不理解使用上下文来呈现响应。

我正在向api发出请求,然后将响应分配给变量。然后我根据响应的变量创建上下文。在这一点上,我知道我应该能够使用上下文变量访问数据。将响应分配给上下文并使用模板标记中的数据的正确方法是什么?

在视图中

def github(request):
    jsonList = []
    req = requests.get('https://api.github.com/users/DrkSephy')
    str_response = req.content.decode('utf-8')
    jsonList.append(json.loads(str_response))
    parsedData = []
    userData = {}
    for data in jsonList:
        userData['name'] = data['name']
        userData['blog'] = data['blog']
        userData['email'] = data['email']
        userData['public_gists'] = data['public_gists']
        userData['public_repos'] = data['public_repos']
        userData['avatar_url'] = data['avatar_url']
        userData['followers'] = data['followers']
        userData['following'] = data['following']
    moviesList = parsedData.append(userData)
    context = {'moviesList': moviesList}
    return render(request, 'serviceapp/github.html', context)

在html文件中

 {% for movie in moviesList %}
        <tr>
            <td>{{ movie.name }}</td>
            <td>{{ movie.blog }}</td>
            <td>{{ movie.avatar_url }}</td>
            <td>{{ movie.public_repos }}</td>
            <td>{{ movie.public_gists }}</td>
            <td>{{ movie.email }}</td>
            <td>{{ movie.followers }}</td>
            <td>{{ movie.following }}</td>
        </tr>
    {% endfor %}

1 个答案:

答案 0 :(得分:0)

{% for moviesList in moviesList %}

^这里的变量都是相同的 - 你已经使用moviesList作为整个列表,所以你不能再将它用于变量内部循环。使用这样的东西:

{% for item in moviesList %}
    {{ item.name }}
    ...
{% endfor %}

编辑:

好的,所以我再次看了你的代码。如果填充正确,您是否尝试在视图中打印变量?因为他们不是。看看这一行:

moviesList = parsedData.append(userData)

^您在此处执行的操作是将parsedData.append()的结果(None,因为追加是就地修改)分配给moviesList变量,然后None变量print(max(['a', 'cat', 'sat', 'g'], key=lambda s: (len(s), s))) 1}}。