Django:循环模板不循环遍历列表

时间:2016-02-21 14:22:07

标签: python django django-templates

我不知道为什么,但我的Django循环没有输出任何东西。这是相关的代码。

我的AbstractUser类由以下两种方法组成:

def get_followers(self):
    return [user for user in self.followers.all()]

def get_following(self):
    return [user for user in self.following.all()]

我的观点:

class UserFollowingView(View):
    def get(self, request, username):
        user = get_object_or_404(apps.get_model('users', 'User'), username=username)
        context = {
            'username': user.username,
            'following': user.get_following(),
        }
        return render(request, 'core/user_following.html', context)


class UserFollowersView(View):
    def get(self, request, username):
        user = get_object_or_404(apps.get_model('users', 'User'), username=username)
        context = {
            'username': user.username,
            'followers': user.get_followers(),
        }
        return render(request, 'core/user_followers.html', context)

我的模板:

user_following.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>User | {{ username }}</title>
</head>
<body>
    <h1>{{ username }} | Following</h1><hr/>

    {% for user in user_following %}
        <h3>{{ user.username }}</h3>
    {% endfor %}
</body>
</html>

user_followers.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>User | {{ username }}</title>
</head>
<body>
    <h1>{{ username }} | Followers</h1><hr/>

    {% for user in user_followers %}
        <h3>{{ user.username }}</h3>
    {% endfor %}
</body>
</html>

user_following.html或user_followers.html文件均无效

我确保每个用户都有关注者/关注者(因此填充了列表),但由于某种原因,循环没有运行。我没有错误。

>>> a = User.objects.get(username="Test")
>>> a.get_followers()
[<User: Test2>, <User: Test3>]
>>> 

请参阅输出:1

1 个答案:

答案 0 :(得分:1)

您已将user_followinguser_followers用作模板中的独立变量;但他们不是,他们是用户的方法。但是,您已将followingfollowers变量传递到您的上下文中;也许你打算用那些呢?

(请注意,这些方法都没有做任何有用的事情;它们完全等同于调用user.followers.all()user.following.all(),因此您可以在视图或模板中执行此操作。)