Views.Py中的数据未显示在模板上

时间:2019-06-14 20:10:43

标签: django

我试图找出为什么 views.py 中的某些数据没有显示出来。这是我的代码

views.py

def user(request, user_id):
    profile = get_object_or_404(User, pk=user_id)
    rnk = Ranks.objects.all()
    context = {
        'profile' : profile,
        'rnk' : rnk,
    }
    return render(request, 'user/user.html', context)

例如,我尝试显示模型中的rank_name,并且在HTML模板中使用了{{rnk.rank_name}},但没有显示出来。

另一方面,来自profile的数据如{{profile.user_name}}也在显示。

请注意,rnkprofile来自此模型:

class Ranks(models.Model):
    rank_name = models.CharField(max_length=300)
    description = models.TextField(blank=True)

    def __str__(self):
        return self.br_rank_name


class User(models.Model):
    b_rank = models.ForeignKey(Ranks, on_delete=models.DO_NOTHING)
    name = models.CharField(max_length=20)
    link = models.URLField(max_length=100)
    weekly = models.BooleanField(default=False)
    biweekly = models.BooleanField(default=False)

    def __str__(self):
       return self.name

这是我的模板

{% extends 'base.html' %}
{% load static %}
{% block content %}

<h5>{{profile.user_name}}</h5><!--This shows up-->
<p>{{rnk.rank_name}}</p>
<p>{{profile.weekly}}</p>
<span class="icon-desc">{{rnk.rank_points}} points</span>

{% endblock %}

1 个答案:

答案 0 :(得分:1)

这是因为传递给模板的rnk是一个 queryset ,并且包含多个对象。因此,您需要使用rnk来迭代for,并尝试在模板中显示每个细节。

{% extends 'base.html' %}
{% load static %}
{% block content %}
    <h5>{{ profile.user_name }}</h5>
    <p>{{ profile.weekly }}</p>
    {% for rank in rnk %}
        <p>{{ rank.rank_name }}</p>
        <span class="icon-desc">{{ rank.rank_points }} points</span>
        <img src="{{ rank.br_photo.url }}" height="150" alt="">
    {% endfor %}
{% endblock %}