BBS的个人主页,文章详情页以及模板继承,数据库关联查询操作

本文介绍了如何在Django中创建个人主页,通过在主页面添加链接实现用户头像和用户名的点击跳转。利用base.html进行模板继承,以实现归档和3-8布局。个人主页视图函数处理username参数,文章详情页通过pk参数获取一对一关系的文章信息,并使用safe过滤器确保内容正确显示。
摘要由CSDN通过智能技术生成

上一篇文章我们写好了主页面(index),现在我们要从主页面跳转到个人用户的个人页面.

个人页面

首先在主页面实现跳转

<span><a
                                        href="/blog/{
    { foo.user.username }}"
                                        id="id_span">{
  { foo.user.username }}</a></span>

给username加一个a标签,为了实现点击头像也能跳转,在头像那边加一个label标签

<label for="id_span"><a
                                            href="/blog/{
    { foo.user.username }}" id="id_span">
                                        <img class="media-object author-img img-circle"
                                             src="/media/{
    { foo.user.avatar }}" alt="头像">
                                    </a>
                                    </label>

label标签的for关键字与a标签的id关联.

设置url,写视图函数,在视图函数里,接受username参数
技术点:
1.归档的数据库查询

def home(request,username):
    print(username)
    # 去usernameInfo表中把用户对象取出来
    user = models.UserInfo.objects.filter(username = username).first()
    if not user:
        print(444)
        return HttpResponse("404")
    else:
        # 如果用户存在需要将他写的所有文章取出来
        blog = user.blog

        # article_list查询,我的文章列表
        article_list = models.Article.objects.filter(user=user)

        # 我的文章分类,及每个分类下的文章数
        # 将我的文章按照我的分类分组,并统计出每个分类下的文章数
        category_list = models.Category.objects.filter(blog=blog)
        # 统计当前站点下有哪些标签
        # 看当前博客下有什么标签,反向查询article表,values("title","c")看tag.title下的文章数
        tag_list = models.Tag.objects.filter(blog=blog).annotate(c=Count("article")).values("title","c")
        # 按照日期归档
        archive_list = models.Article.objects.filter(user=user).extra(
            select={
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值