Django基础教程(八十八)Django实现文章组件之文章分类前端组件的实现:码农斗胆造轮子:Django文章分类前端组件,从“稀烂”到“真香”的血泪史!

第一章:缘起——为啥我的分类列表像个“铁憨憨”?

相信很多Django初学者都经历过这样的阶段:跟着教程吭哧吭哧地写好了模型(Model),搞定了视图(View),然后在模板(Template)里,用类似下面这样的代码渲染分类:

<ul>
{% for category in categories %}
    <li><a href="{% url 'category' category.id %}">{
  
  { category.name }}</a></li>
{% endfor %}
</ul>

搞定,收工!然后一看浏览器……嗯,功能是有了,但这玩意儿长得也太“原生态”了吧?光秃秃一个列表,毫无美感可言,放在博客侧边栏就像个没人疼的“铁憨憨”。

你可能会想:“我给它加个Bootstrap的 list-group 类不就完事儿了?”

<ul class="list-group">
{% for category in categories %}
    <li class="list-group-item"><a href="...">{
  
  { category.name }}</a></li>
{% endfor %}
</ul>

看起来是好了点,但它依然“死气沉沉”。我们想要的是什么呢?

  • 带文章计数:每个分类后面跟着一个数字,显示该分类下有多少篇文章,瞬间凸显专业性。
  • 高亮当前分类:当我浏览“Python”分类下的文章时,“Python”这个分类项应该被高亮显示,给用户清晰的导航反馈。
  • 可折叠/展开:如果分类太多,能不能做个折叠面板,不占地方?
  • 复用性:这个组件应该在博客的多个页面(首页、文章详情页、关于我等)都能使用,而不是把同样的代码到处复制粘贴。

看,需求就是这么一步步“得寸进尺”的。而满足这些需求的过程,就是我们从“写死代码”到“打造组件”的进化之路。

第二章:筑基——后端数据准备,咱得先把“货”备齐

前端再花哨,也得有数据支撑。我们假设已经有了一个简单的文章(Article)和分类(Category)模型。

1. 模型层(models.py)

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=100, unique=True)
    desc = models.TextField(blank=True)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

    # 关键方法:获取该分类下的已发布文章数量
    def get_article_count(self):
        # 使用反向查询,避免N+1问题
        return self.articles.filter(status='published').count()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值