django博客项目-博客首页搭建

该博客介绍了如何使用Bootstrap构建导航栏,并根据用户是否登录显示不同内容,包括登录、注销功能。同时展示了使用栅栏系统进行页面分栏布局,以及文章列表的渲染。涉及知识点包括Bootstrap的使用、Django模板语法、ORM查询语句和前端样式编写。
摘要由CSDN通过智能技术生成

导航栏搭建

导航栏的显示分为登录和没有登录的两种情况显示。从https://v3.bootcss.com/components/网站上拿到对应导航栏booststrap样式代码,修改部分内容即可。添加了注销功能。

代码

前端代码:
文件名:index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/css/bootstrap.min.css">
    <script src="/static/js/jquery.min.js"></script>
    <script src="/static/js/bootstrap.min.js"></script>
</head>
<body>
<nav class="navbar navbar-default">
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">博客园</a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">随笔 <span class="sr-only">(current)</span></a></li>
        <li><a href="#">博文</a></li>

      </ul>
      <ul class="nav navbar-nav navbar-right">
          {% if request.user.is_authenticated %}
          <li><a href="#"><span id="user_icon" class="glyphicon glyphicon-user"></span>{{ request.user.username }}</a></li>
                <li class="dropdown">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
                  <ul class="dropdown-menu">
                    <li><a href="#">修改密码</a></li>
                    <li><a href="#">修改头像</a></li>
                    <li><a href="/logout/">注销</a></li>
                    <li role="separator" class="divider"></li>
                    <li><a href="#">Separated link</a></li>
                  </ul>
                </li>
          {% else %}
              <li><a href="/login/">登录</a></li>
              <li><a href="/register/">注册</a></li>
          {% endif %}

      </ul>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>
</body>
</html>

后端代码

# urls.py
url(r'^logout/', blog_views.logout, name="logout"),
# views.py
def logout(request):
    auth.logout(request)  # 等价于 request.session.flush()

    return redirect('/login/')

知识点

booststrap 使用
auth注销功能使用

效果展示

登录前:
在这里插入图片描述

登录后:
在这里插入图片描述

首页主体布局搭建

利用栅栏系统分栏分为了三大块,左侧、中间、右侧。

代码

<!--系统首页分栏-->
<div class="container-fluid">
    <div class="col-md-3">
<!--        面板样式展示-->
        <div class="panel panel-default">
            <div class="panel-heading">Panel heading without title</div>
            <div class="panel-body">
            Panel content
            </div>
        </div>
        <div class="panel panel-info">
            <div class="panel-heading">Panel heading without title</div>
            <div class="panel-body">
            Panel content
            </div>
        </div>
    </div>
    <div class="col-md-6">中间</div>
    <div class="col-md-3">
<!--        面板样式展示-->
        <div class="panel panel-success">
            <div class="panel-heading">Panel heading without title</div>
            <div class="panel-body">
            Panel content
            </div>
        </div>
        <div class="panel panel-danger">
            <div class="panel-heading">Panel heading without title</div>
            <div class="panel-body">
            Panel content
            </div>
        </div>
    </div>

</div>

知识点

bootstrap 分栏

效果展示

在这里插入图片描述

文章列表渲染

代码

前端代码:index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/css/bootstrap.min.css">
    <script src="/static/js/jquery.min.js"></script>
    <script src="/static/js/bootstrap.min.js"></script>
    <style>
        .pub_info{
            margin-top:10px
        }
        .pub_info .glyphicon-comment{
            vertical-align: -2px
        }
        .pub_info .glyphicon-thumbs-up{
            vertical-align: -2px
        }
    </style>
</head>
<body>
<nav class="navbar navbar-default">
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">博客园</a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">随笔 <span class="sr-only">(current)</span></a></li>
        <li><a href="#">博文</a></li>

      </ul>
      <ul class="nav navbar-nav navbar-right">
          {% if request.user.is_authenticated %}
          <li><a href="#"><span id="user_icon" class="glyphicon glyphicon-user"></span>{{ request.user.username }}</a></li>
                <li class="dropdown">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
                  <ul class="dropdown-menu">
                    <li><a href="#">修改密码</a></li>
                    <li><a href="#">修改头像</a></li>
                    <li><a href="/logout/">注销</a></li>
                    <li role="separator" class="divider"></li>
                    <li><a href="#">Separated link</a></li>
                  </ul>
                </li>
          {% else %}
              <li><a href="/login/">登录</a></li>
              <li><a href="/register/">注册</a></li>
          {% endif %}

      </ul>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>

<!--系统首页分栏-->
<div class="container-fluid">
    <div class="col-md-3">
<!--        面板样式展示-->
        <div class="panel panel-default">
            <div class="panel-heading">Panel heading without title</div>
            <div class="panel-body">
            Panel content
            </div>
        </div>
        <div class="panel panel-info">
            <div class="panel-heading">Panel heading without title</div>
            <div class="panel-body">
            Panel content
            </div>
        </div>
    </div>
    <div class="col-md-6">
        <div class="article_list">
            {% for article in article_list %}
            <div class="article_item">
                <h5><a href="">{{ article.title }}</a></h5>
                <div class="article-desc">
                    <span class="media-left">
                        <a href=""><img width="56px" height="56px" src="/media/{{ article.user.avatar }}"></a>
                    </span>
                    <span class="media-right">
                        {{ article.desc }}
                    </span>
                </div>
                <div class="small pub_info">
                    <span><a href="">{{ article.user.username }}</a></span>&nbsp;&nbsp;
                    <span>发布于&nbsp;&nbsp;{{ article.create_time|date:"Y-m-d H:i" }}</span>&nbsp;&nbsp;&nbsp;
                    <span class="glyphicon glyphicon-comment"></span>评论({{ article.comment_count }})&nbsp;&nbsp;
                    <span class="glyphicon glyphicon-thumbs-up"></span>点赞({{ article.up_count }})
                </div>

            </div>
            <hr>
            {% endfor %}
        </div>
    </div>
    <div class="col-md-3">
<!--        面板样式展示-->
        <div class="panel panel-success">
            <div class="panel-heading">Panel heading without title</div>
            <div class="panel-body">
            Panel content
            </div>
        </div>
        <div class="panel panel-danger">
            <div class="panel-heading">Panel heading without title</div>
            <div class="panel-body">
            Panel content
            </div>
        </div>
    </div>

</div>
</body>
</html>

后端代码:views.py

def index(request):
    article_list = models.Article.objects.all()
    print(article_list)
    return render(request, 'index.html', {'article_list': article_list})

知识点

ORM 查询语句
前端style样式编写
bootstrap 使用
django 模板语法

效果展示

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值