想在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="{{ link.Siteurl }}" target="_blank">{{ link.Sitename }}</a>
{% endfor %}
{% endfor %}
这里的 friendlink_set 一定是和 链接分类相关联的 models 里的 friendlink 要首写大写 但 friendlink_set 这里的 friendlink 要小写 slice:"2" 是取前2条记录。
最后得到效果如图:
当然 这种方法也可以实现像新闻首页的这种效果: