主页面

本文主要介绍了如何使用Bootstrap的栅栏系统实现2-8-2布局,用于主页面的广告与内容展示。同时,讲解了Bootstrap面板的运用,以及在展示文章时如何获取并显示头像、文章信息及评论数。特别提到了用户头像存储路径的配置和通过反向查询获取评论数据的技术细节。
摘要由CSDN通过智能技术生成

上一篇文章我们说道了导航栏目的设置,这篇文章我们说一下主页面的布局.

bootstrap栅栏系统

栅栏系统就是负责展示比例的,我们采用2-8-2布局,就是说,一整块屏幕我们分成12分,左右各占2份用来显示广告,中间显示博客主题内容.栅栏布局详情

bootstrap面板

面板是广告位的样式
点击查看

展示文章包括头像

首先得要从后台拿到数据
拿到所有的文章数据

def index(request):
    # 查询所有的文章列表
    article = models.Article.objects.all()

    return render(request, "index.html",{"article_list":article})

循环的拿到文章的标题,desc,这边关于头像有一个技术点:
头像使用户上传的,所有的用户上传的东西都放在media文件夹里,要在setting里面配置路径

# 在Django里面,用户上传的都叫media文件,这样才能看到用户头像
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR,"media")

另外拿到评论和点赞的数据也有一个技术点:
反向查询,我们先看看article表和comment表

class Article(models.Model):
    """
    文章
    """
    nid = models.AutoField(primary_key=True)
    title = models.CharField(max_length=50)  # 文章标题
    desc = models.CharField(max_length=255)  # 文章描述
    create_time = models.DateTimeField()  # 创建时间

class Comment(models.Model):
    """
    评论表
    """
    nid = models.AutoField(primary_key=True)
    article = models.ForeignKey(to="Article", to_field="nid")
    user = models.ForeignKey(to="UserInfo", to_field="nid")
    content = models.CharField(max_length=255)  # 评论内容
    create_time = models.DateTimeField(auto_now_add=True)
    parent_comment = models.ForeignKey("self", null=True)

可以看到comment是作为外键链接到article表的,所以不能用article.comment来查询,而是应该反向查询foo.comment_set.all.count拿到所有的评论数.

<div class="article-list">
                    {% for foo in article_list %}
                        <div class="article">
                            <h3>{{ foo.title }}</h3>
                            <div class="media">
                                <div class="media-left media-middle">
                                    <a href="#">
                                        <img class="media-object author-img img-circle" src="/media/{{ foo.user.avatar }}" alt="头像">
                                    </a>
                                </div>
                                <div class="media-body">
                                    <p>{{ foo.desc }}</p>
                                </div>
                            </div>
                        <div class="article-footer">
                            <span><a href="">{{ foo.user.username }}</a></span>发布于
                            <span>{{ foo.create_time | date:"Y-m-d H:i:s" }}</span>
                            <span class="glyphicon glyphicon-comment">评论({{ foo.comment_set.all.count }})</span>
                            <span class="glyphicon glyphicon-thumbs-up">点赞({{ foo.articleupdown_set.all.count }})</span>
                        </div>
                        </div>
                    {% endfor %}

                </div>

效果

在这里插入图片描述



完整项目传至github,点击跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值