django模板之循环嵌套

想在django下实现这么一功能。从数据库里获取所有分类,并显示每个分类下的内容。这里我们以友情链接来做。

首页友情链接有分类  models如下:

友情链接分类:

class FriendLinkcategory(models.Model):
    Id = models.AutoField(primary_key=True)
    Name = models.CharField(_(u"分类名称"),max_length=50)
    def __unicode__(self):
        return self.Name

友情链接:

class FriendLink(models.Model):
    Id =  models.AutoField(primary_key=True)
    Categoryid = models.ForeignKey(FriendLinkcategory,verbose_name="类别")
    Sitename = models.CharField(_(u"网站名称"),max_length=80)
    Siteurl = models.URLField(_(u"网站网址"),unique=True)
    Sitelogo = models.CharField(_(u"网站logo"),max_length=300,blank=True, null=True)
    Siteqq = models.CharField(_(u"QQ"),max_length=80,blank=True, null=True)
    Email = models.EmailField(_(u"邮箱"),blank=True, null=True)
    Status_list = (
        (0, '待审'),
        (1, '正常'),
        (2, '过期'),
        (3, '暂停'),
        )
    Status = models.SmallIntegerField(_(u"状态"),choices=Status_list,default=1)
    def __unicode__(self):
        return self.Sitename

在 views.py 里:

def main(request):
    #分类list
    linkcategorylist = FriendLinkcategory.objects.all()
    return render_to_response("link.html",{"linkcategorylist":linkcategorylist})

html模板里代码:
{% for linkcategory in linkcategorylist %}
        {{ linkcategory.Name }}
        <br />
        {% for link in linkcategory.friendlink_set.all|slice:"2" %}
        <a href="{{%20link.Siteurl%20}}" target="_blank">{{ link.Sitename }}</a>
        
        {% endfor %}
       
        {% endfor %}
这里的   friendlink_set 一定是和 链接分类相关联的 models 里的  friendlink 要首写大写 但  friendlink_set 这里的  friendlink 要小写  slice:"2"  是取前2条记录。

最后得到效果如图:


当然 这种方法也可以实现像新闻首页的这种效果:



版权声明:本文为lanlandechong原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。