首页 > 其他分享 >BBS文章内容的搭建

BBS文章内容的搭建

时间:2023-05-11 09:35:39浏览次数:50  
标签:title models content admin 文章内容 nbsp 搭建 BBS Panel

目录

一、文章的框架搭建

1、媒体对象列表

https://v3.bootcss.com/components/#btn-dropdowns

<ul class="media-list">
  <li class="media">
    <div class="media-left">
      <a href="#">
        <img class="media-object" src="..." alt="...">
      </a>
    </div>
    <div class="media-body">
      <h4 class="media-heading">Media heading</h4>
      ...
    </div>
  </li>
</ul>

2.前端页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script>
    <link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.css">
    <script src="/static/bootstrap-3.4.1-dist/js/bootstrap.js"></script>
</head>
<body background="/static/img/img_2.png"
      style="background-repeat:no-repeat; background-attachment: fixed; background-size: 100% 100%">
{#导航条#}
<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="#">BBS仿博客园作业</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>
                <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>
                        <li role="separator" class="divider"></li>
                        <li><a href="#">发现</a></li>
                    </ul>
                </li>
            </ul>
            <form class="navbar-form navbar-left">
                <div class="form-group">
                    <input type="text" class="form-control" placeholder="学习BBS">
                </div>
                <button type="submit" class="btn btn-default">搜索</button>
            </form>
            <ul class="nav navbar-nav navbar-right">
                {% if request.session.username %}
                    <li><a href="#">{{ request.session.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="#" data-toggle="modal" data-target=".bs-example-modal-lg">修改密码</a></li>
                            <li><a href="#">查看信息</a></li>
                            <li><a href="#">设置</a></li>
                            <li role="separator" class="divider"></li>
                            <li><a href="/logout/">退出登录</a></li>
                        </ul>
                    </li>
                {% else %}
                    <li><a href="#">登录</a></li>
                    <li><a href="#">注册</a></li>
                {% endif %}


            </ul>
            <!-- Large modal -->
            {#<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-lg">Large modal</button>#}

            <div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog"
                 aria-labelledby="myLargeModalLabel">
                <div class="modal-dialog modal-lg" role="document">
                    <div class="modal-content">
                        <h1 class="text-center">修改密码</h1>
                        <div class="row">
                            <div class="col-md-8 col-md-offset-2">
                                <form action="">
                                    <div class="form-group">
                                        <label for="username">username:</label>
                                        <input type="text" id="username" class="form-control" disabled
                                               value="{{ request.session.username }}">
                                    </div>
                                    <div class="form-group">
                                        <label for="password">New password:</label>
                                        <input type="password" id="password" class="form-control">
                                    </div>
                                    <div class="form-group">
                                        <label for="re_password">Confirm Password:</label>
                                        <input type="password" id="re_password" class="form-control">
                                    </div>
                                    <div class="form-group">
                                        <label for="old_password">Original password:</label>
                                        <input type="password" id="old_password" class="form-control">
                                    </div>
                                    {#                                    <input type="button" class="btn btn-success btn-block" value="提交">#}
                                    <botton class="btn btn-warning btn-block">提交</botton>
                                    <br>
                                </form>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>
<div class="container-fluid">
    <div class="row">
        {#左边的边框#}
        <div class="col-md-2">
            <div class="panel panel-info">
                <div class="panel-heading">Panel heading without title</div>
                <div class="panel-body">
                    Panel content
                </div>
            </div>
            <div class="panel panel-success">
                <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-default">
                <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 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>
        {#中间的内容#}
        <div class="col-md-7">
            <ul class="media-list">
                <li class="media">
                    <h4 class="media-heading">青青草原懒大王</h4>
                    <div class="media-left">
                        <a href="">
                            <img class="media-object" src="/static/img/img_3.png" alt="..." style="    width: 70px;">
                        </a>
                    </div>
                    <div class="media-body">
                        懒羊羊,是动画片系列《喜羊羊与灰太狼》及其衍生作品中的正面角色。
                        青青草原上最可爱的小羊,同时也是很幸运的小羊,每次遇到危险时,都能化险为夷。一旦闻到食物的香味,马上会被吸引过去。
                        羊历3507年6月26日出生,比喜羊羊小1岁,喜羊羊为羊历3506年5月25日出生,是喜羊羊的伙伴之一。
                    </div>
                    <br>
                    <div>
                        {# xiezhr 2023-05-10 08:04  1   0 121     #}
                        <span><a href="">懒哥</a></span>  &nbsp;  &nbsp;
                        <span><a href="">2023-05-10</a></span>  &nbsp;  &nbsp;
                        <span><a href="">08:04</a></span>&nbsp;  &nbsp;
                        <span><span class="glyphicon glyphicon-thumbs-up"></span>(100)</span>  &nbsp;  &nbsp;
                        <span><span class="glyphicon glyphicon-thumbs-down"></span>(11)</span>  &nbsp;  &nbsp;
                        <span><span class="glyphicon glyphicon-comment"></span>(221)</span>  &nbsp;  &nbsp;
                    </div>
                </li>
                <hr>
                <li class="media">
                    <h4 class="media-heading">青青草原懒大王</h4>
                    <div class="media-left">
                        <a href="">
                            <img class="media-object" src="/static/img/img_3.png" alt="..." style="    width: 70px;">
                        </a>
                    </div>
                    <div class="media-body">
                        懒羊羊,是动画片系列《喜羊羊与灰太狼》及其衍生作品中的正面角色。
                        青青草原上最可爱的小羊,同时也是很幸运的小羊,每次遇到危险时,都能化险为夷。一旦闻到食物的香味,马上会被吸引过去。
                        羊历3507年6月26日出生,比喜羊羊小1岁,喜羊羊为羊历3506年5月25日出生,是喜羊羊的伙伴之一。
                    </div>
                    <br>
                    <div>
                        {# xiezhr 2023-05-10 08:04  1   0 121     #}
                        <span><a href="">懒哥</a></span>  &nbsp;  &nbsp;
                        <span><a href="">2023-05-10</a></span>  &nbsp;  &nbsp;
                        <span><a href="">08:04</a></span>&nbsp;  &nbsp;
                        <span><span class="glyphicon glyphicon-thumbs-up"></span>(100)</span>  &nbsp;  &nbsp;
                        <span><span class="glyphicon glyphicon-thumbs-down"></span>(11)</span>  &nbsp;  &nbsp;
                        <span><span class="glyphicon glyphicon-comment"></span>(221)</span>  &nbsp;  &nbsp;
                    </div>
                </li>
                <hr>
                <li class="media">
                    <h4 class="media-heading">青青草原懒大王</h4>
                    <div class="media-left">
                        <a href="">
                            <img class="media-object" src="/static/img/img_3.png" alt="..." style="    width: 70px;">
                        </a>
                    </div>
                    <div class="media-body">
                        懒羊羊,是动画片系列《喜羊羊与灰太狼》及其衍生作品中的正面角色。
                        青青草原上最可爱的小羊,同时也是很幸运的小羊,每次遇到危险时,都能化险为夷。一旦闻到食物的香味,马上会被吸引过去。
                        羊历3507年6月26日出生,比喜羊羊小1岁,喜羊羊为羊历3506年5月25日出生,是喜羊羊的伙伴之一。
                    </div>
                    <br>
                    <div>
                        {# xiezhr 2023-05-10 08:04  1   0 121     #}
                        <span><a href="">懒哥</a></span>  &nbsp;  &nbsp;
                        <span><a href="">2023-05-10</a></span>  &nbsp;  &nbsp;
                        <span><a href="">08:04</a></span>&nbsp;  &nbsp;
                        <span><span class="glyphicon glyphicon-thumbs-up"></span>(100)</span>  &nbsp;  &nbsp;
                        <span><span class="glyphicon glyphicon-thumbs-down"></span>(11)</span>  &nbsp;  &nbsp;
                        <span><span class="glyphicon glyphicon-comment"></span>(221)</span>  &nbsp;  &nbsp;
                    </div>
                </li>
                <hr>
                 <li class="media">
                    <h4 class="media-heading">青青草原懒大王</h4>
                    <div class="media-left">
                        <a href="">
                            <img class="media-object" src="/static/img/img_3.png" alt="..." style="    width: 70px;">
                        </a>
                    </div>
                    <div class="media-body">
                        懒羊羊,是动画片系列《喜羊羊与灰太狼》及其衍生作品中的正面角色。
                        青青草原上最可爱的小羊,同时也是很幸运的小羊,每次遇到危险时,都能化险为夷。一旦闻到食物的香味,马上会被吸引过去。
                        羊历3507年6月26日出生,比喜羊羊小1岁,喜羊羊为羊历3506年5月25日出生,是喜羊羊的伙伴之一。
                    </div>
                    <br>
                    <div>
                        {# xiezhr 2023-05-10 08:04  1   0 121     #}
                        <span><a href="">懒哥</a></span>  &nbsp;  &nbsp;
                        <span><a href="">2023-05-10</a></span>  &nbsp;  &nbsp;
                        <span><a href="">08:04</a></span>&nbsp;  &nbsp;
                        <span><span class="glyphicon glyphicon-thumbs-up"></span>(100)</span>  &nbsp;  &nbsp;
                        <span><span class="glyphicon glyphicon-thumbs-down"></span>(11)</span>  &nbsp;  &nbsp;
                        <span><span class="glyphicon glyphicon-comment"></span>(221)</span>  &nbsp;  &nbsp;
                    </div>
                </li>
                <hr>
            </ul>


        </div>

        {#右边的边框#}
        <div class="col-md-3">
            <div class="panel panel-info">
                <div class="panel-heading">Panel heading without title</div>
                <div class="panel-body">
                    Panel content
                </div>
            </div>
            <div class="panel panel-success">
                <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-default">
                <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 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>
    </div>
</div>

效果图:
image

二、Django后台添加和绑定数据

由于往数据库中直接加入数据太麻烦,所以我们要用Django自动的后台管理系统
因为我们之前创的用户密码的加盐是我们自己写的方法,所以这里即使把0改成1也不能登录admin后台,所以我们要createsuperuser手动创建一个
image
记一下密码吧
image
然后打开Django的admin后台管理,发现数据库中的表这里都是没有的,所以我们要进行导入
image
在admin文件里面操作
image

from django.contrib import admin

# Register your models here.

from app01 import models
admin.site.register(models.UserInfo)
admin.site.register(models.Blog)
admin.site.register(models.Tag)
admin.site.register(models.Category)
admin.site.register(models.Article)
admin.site.register(models.Article2Tag)
admin.site.register(models.UpAndDown)
admin.site.register(models.Comment)

刷新可见
image
如何把英文的表名改成中文的?只需在models的每个类下面加上:

  class Meta:
        verbose_name_plural = '文章表'
        # verbose_name = '文章表'  # 这个中文后面会加s

这里默认只会显示对象,所以别忘记去改__str__
image

   def __str__(self):
        return self.site_name

这里用户绑定站点出现的问题,需要在phone字节后面加上一个属性blank=True
image

    """
        null=True, 代表的是数据库中可以为空
        blank=True,代表的是django的后台页面上可以为空
    """

三、文章的真实数据导入前端(读取数据库文章表)

media文件的开放

配置文件中

# 只要配置了这句话,以后再上传图片的话,就会上传到这个文件夹下面去
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

URL开设接口(/此时前端还是无法看到,要在路由添加一个接口/media/)

from django.views.static import serve
from django.conf import settings
# 如果你想访问media文件夹下的内容,必须开设一个接口对外访问(这里注意要正则匹配,否则图片找不到资源)
 re_path(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),

视图函数

@login_auth
def home(request):
    # 读取所有的文章的列表
    article_list = models.Article.objects.all()
    return render(request, 'home.html', locals())

html

    {#中间的内容#}
    <div class="col-md-7">
        <ul class="media-list">
            {% for article in article_list %}
                 <li class="media">
                <h4 class="media-heading"><a href="">{{ article.title }}</a></h4>
                <div class="media-left">
                    <a href="">
                        <img class="media-object" src="/media/{{ article.blog.userinfo.avatar }}" alt="..." style="    width: 70px;">
                    </a>
                </div>
                <div class="media-body">
                    {{ article.desc }}
                </div>
                <br>
                <div>
                    {# xiezhr 2023-05-10 08:04  1   0 121     #}
                    <span><a href="">{{ article.blog.userinfo.username }}</a></span>  &nbsp;  &nbsp;
                    <span><a href="">{{ article.create_time|date:'Y-m-d' }}</a></span>  &nbsp;  &nbsp;
                    <span><a href="">08:04</a></span>&nbsp;  &nbsp;
                    <span><span class="glyphicon glyphicon-thumbs-up"></span>({{ article.up_num }})</span>  &nbsp;  &nbsp;
                    <span><span class="glyphicon glyphicon-thumbs-down"></span>({{ article.down_num }})</span>  &nbsp;  &nbsp;
                    <span><span class="glyphicon glyphicon-comment"></span>({{ article.comment_num }})</span>  &nbsp;  &nbsp;
                </div>
            </li>
            {% endfor %}
            <hr>
        </ul>
    </div>

标签:title,models,content,admin,文章内容,nbsp,搭建,BBS,Panel
From: https://www.cnblogs.com/yuezongke/p/17389469.html

相关文章

  • mysql8主从复制搭建时出现 Last_IO_Errno: 2061错误及解决过程
    我在本地实验一主一从过程中,到最后在从服务器上配置链接参数,并启动主从复制后,查看状态出现如下图的错误,图中两个红框框里的是链接错误问题。可以看到提示的错误编号是2061。通过查资料才知道这是一种常见的错误码,主要是在主服务器创建的主从复制建立链接用的账号认证模式不对,所以......
  • csrf与auth初识BBS项目
    csrf相关的装饰器#与csrf验证相关#打开csrf中间件后,方法都需要验证''' 打开csrf的中间件之后,有几个方法不验证 关闭csrf的中间件之后,有几个方法验证'''fromdjango.views.decorators.csrfimportcsrf_exempt,csrf_protect@csrf_exempt#不再检测,局部禁用(前提是全站......
  • BBS首页的搭建之导航条and修改密码功能的实现
    目录一、导航条的搭建html页面二、修改密码功能的实现html页面搭建修改密码后端逻辑实现1.session登录装饰器的验证2.阻止事件二次提交,主要针对bottom按钮在form表单中,又绑定了Ajax提交:3.视图函数功能逻辑的实现4.js前端页面的实现三、退出登录功能的实现1.视图函数一、导航条的......
  • 使用docker搭建nodebb论坛
    1、首先放开4567端口因为这是nodebb的端口号firewall-cmd--zone=public--add-port=4567/tcp--permanent2、构建所需要的docker网络dockernetworkcreatemongo-net3、安装mongodockerrun--namemongo--restartalways--networkmongo-net-dmongo--wiredTigerCacheSizeGB......
  • Linux中DNS服务器的搭建
    1.DNS服务的安装2.配置主配置文件named.conf3.配置扩展配置文件named.rfc1912.zones4.配置正向解析文件sdcet.cn.zone 5.配置反向解析文件92.168.192.zone ......
  • 2、负载均衡服务LVS的NAT、DR、TUNNEL搭建流程及LVS 持久连接、防火墙标记
    LVS的NAT模式实战案例(支持端口映射)环境如下:一台:internetclient:192.168.10.123/24GW:无仅主机一台:lvseth1仅主机192.168.10.100/24eth0NAT10.0.0.100/24两台RS:RS1:10.0.0.8/24GW:10.0.0.2NATRS2:10.0.0.18/24GW:10.0.0.2NAT配置如下第一步:在LVS机器......
  • 搭建空地异构多机器人协同系统实验平台
    ♪搭建空地异构多机器人协同系统实验平台,2022年4月-2022年6月: 参与内容:[1]设计动捕摄像头的安装布线等配置方案;[2]通过多智能体行为控制理论对空地协同运动学行为进行深度建模;[3] 基于ROS系统对空地协同行为控制算法进行开发与验证;[4] 实现包括集群编队、协同避障与动......
  • HEV并联(IPS) 车辆仿真 simulink/stateflow搭建 模型包含工况路
    HEV并联(IPS)车辆仿真simulink/stateflow搭建模型包含工况路普输入,驾驶员模型,车辆控制模型(CDCS状态切换以及EVHEVEngine模式转换),电池及电机系统模型,车辆动力学模型等。通过进行仿真测试验证及参数优化,体现IPS基本原理。ID:56100685578019863......
  • 电动车关键部件选型及参数验证实例 simulink/stateflow搭建
    电动车关键部件选型及参数验证实例simulink/stateflow搭建根据设定的车辆目标参数最高车速最大爬坡度及稳定车速加速时间续航等,计算选择车辆关键部件参数(电机电池);同时建立整车模型(驾驶员VCU控制车辆模型),通过仿真模型验证部件选型是否满足车辆的动力性和经济性指......
  • Tensorflow环境搭建教程
    前言笔者在搭建tensorflow环境时遇到了很多问题,浪费了很多时间,为方便想学习机器学习的同学搭建tensorflow环境,笔者整理了一份教程供读者参考。不能直接修改anaconda里的python版本了,另一种更简单的方法:Win10系统用anaconda新建一个tensorflow环境小白教程.一、下载anaconda......