Django模板不检测模型的实例

时间:2018-02-28 04:07:38

标签: python django

我在models.py中添加了一个Languages模型:

class Languages(models.Model):
    language = models.CharField(max_length=20,blank=False)
    level = models.CharField(max_length=30,blank=False)
    ordering = models.IntegerField(default=1)
    class Meta:
        order = ['order','id']
    def __unicode__(self):
        return ''.join([self.language, '-', self.level])

python3 manage.py makemigrations && python3 manage.py migrate

并创建了几个实例:

python3 manage.py shell
In [1]: from resume.models import Languages
In [2]: Languages.objects.all()
Out[2]: <QuerySet [<Languages: Languages object (5)>, <Languages: Languages object (6)>]>
In [3]: Languages.objects.get(id=5).__dict__
Out[3]: 
{'_state': <django.db.models.base.ModelState at 0x7f0f21bb7668>,
 'id': 5,
 'language': 'English',
 'level': 'professional',
 'ordering': 1}

但是我的模板没有检测到任何语言:

<h2>Languages</h2>
{% for lan in languages %}
    <div>
        <h3>{{ lan.language }}</h3>
        <h5>{{ lan.level }}</h5>
    </div>
{% endfor %} 

在网站的html上,我看到&lt; h2&gt;语言,但不是其他语言。其他型号工作正常。

如上所述,这是我添加到models.py的最新型号。我也叫同花顺:
    python3 manage.py flush

这是showmigrations的一部分:

python3 manage.py showmigrations | grep -i langua
 [X] 0016_remove_language_personalinfo
 [X] 0018_delete_language
 [X] 0019_languages

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

您需要在视图中的模板上下文中添加languages。像这样:

context = {'languages': Languages.objects.all()} 
return render(request, 'index.html', context)