一个简单的小项目博客园(3)bbs首页搭建、使用admin后台管理录入数据

目录:

  1. bbs首页搭建
  2. 使用admin后台管理录入数据

bbs首页搭建

  1. 先添加首页url
# 在urls.py中添加
url(r'^home/', views.home),
  1. 前端页面使用到的bootstrap组件

https://v3.bootcss.com/components/#navbar
https://v3.bootcss.com/components/#panels

  1. 将根目录下的avatar文件夹,改为media文件夹(用户上传头像也改为media文件夹下),并暴露给用户

    1. settings.py,并将avatar内的图片复制到media/avatar下,删除原本根目录下的avatar文件夹。
    # 将用户上传的静态资源放在一个文件夹media下
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    
    1. 暴露media接口,在urls.py中修改
    from django.views.static import serve
    from bbs_exercise import settings
    
    # media配置
    url(r'^media/(?P<path>.*)', serve, {'document_root':settings.MEDIA_ROOT})
    
  2. 首页前端代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>bbs首页</title>
        <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
        <link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css">
        <script src="/static/bootstrap-3.3.7/js/bootstrap.min.js"></script>
    </head>
    <body>
    <nav class="navbar navbar-inverse">
        <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="#">{{ request.user.username }}</a></li>
                        <li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
                               aria-expanded="false">更多操作 <span class="caret"></span></a>
                            <ul class="dropdown-menu">
                                <li><a href="#">修改密码</a></li>
                                <li><a href="#">修改头像</a></li>
                                <li><a href="#">后台管理</a></li>
                                <li role="separator" class="divider"></li>
                                <li><a href="#">注销</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="row">
            <div class="col-md-2">
                <div class="panel panel-primary">
                    <div class="panel-heading">
                        <h3 class="panel-title">Panel title</h3>
                    </div>
                    <div class="panel-body">
                        Panel content
                    </div>
                </div>
                <div class="panel panel-danger">
                    <div class="panel-heading">
                        <h3 class="panel-title">Panel title</h3>
                    </div>
                    <div class="panel-body">
                        Panel content
                    </div>
                </div>
                <div class="panel panel-warning">
                    <div class="panel-heading">
                        <h3 class="panel-title">Panel title</h3>
                    </div>
                    <div class="panel-body">
                        Panel content
                    </div>
                </div>
            </div>
            <div class="col-md-8">
                {% for article in article_list %}
                    <div class="media">
                        <a href="#"><h4 class="media-heading">{{ article.title }}</h4></a>
                        <div class="media-left">
                            <a href="#">
                                <img class="media-object" src="/media/{{ article.blog.userinfo_set.first.avatar }}" alt="..." height="60">
                            </a>
                        </div>
                        <div class="media-body">
    
                            {{ article.desc }}
                        </div>
                        <span><a href="">{{ article.blog.userinfo_set.first }}</a></span>
                        <span>{{ article.create_time| date:"Y-m-d" }}</span>
                        <span><a href="">评论({{ article.comment_num }})</a></span>
                        <span class="glyphicon glyphicon-comment" aria-hidden="true"></span>
                        <span><a href="">点赞({{ article.up_num }})</a></span>
                        <span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span>
                    </div>
    
                    <hr>
                {% endfor %}
    
    
            </div>
            <div class="col-md-2">
                <div class="panel panel-primary">
                    <div class="panel-heading">
                        <h3 class="panel-title">Panel title</h3>
                    </div>
                    <div class="panel-body">
                        Panel content
                    </div>
                </div>
                <div class="panel panel-danger">
                    <div class="panel-heading">
                        <h3 class="panel-title">Panel title</h3>
                    </div>
                    <div class="panel-body">
                        Panel content
                    </div>
                </div>
                <div class="panel panel-warning">
                    <div class="panel-heading">
                        <h3 class="panel-title">Panel title</h3>
                    </div>
                    <div class="panel-body">
                        Panel content
                    </div>
                </div>
            </div>
        </div>
    </div>
    </body>
    </html>
    
  3. 首页逻辑

    def home(request):
        article_list = models.Article.objects.all()
        return render(request, 'home.html', locals())
    ```. 
    
    

回到目录



使用admin后台管理录入数据

  1. 在项目文件夹中找到admin.py,并将模型注册进去

    from django.contrib import admin
    from app01 import models
    
    # Register your models here.
    admin.site.register(models.UserInfo) 
    
  2. 创建超级用户admin
    在这里插入图片描述

  3. 登录后台管理界面

    录入数据、并创建多个分类和博客,添加文章对应标签关系。注:还需手动添加博客和用户的对应关系

    在这里插入图片描述
    回到目录

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值