整体设计理念
设计系统首页(文章列表的渲染)admin:Django内部的一个组件:后台数据库管理组件(Web页面)python manage.py createsuperuser 针对用户认证组件对应的用户表
第一个设计—根路径为首页[区分登录与未登录的首页内容]
修改URL路径[15]
from django.contrib import adminfrom django.urls import path, include, re_pathfrom django.conf import settingsfrom django.conf.urls.static import staticfrom blog import viewsurlpatterns = [path('admin/', admin.site.urls),path('summernote/', include('django_summernote.urls')),# http://127.0.0.1:8001/login/path('login/', views.login),path('get_validCode_img/', views.get_validCode_img),# http://127.0.0.1:8001/index/path('index/', views.index),# http://127.0.0.1:8001/re_path('^$', views.index),# http://127.0.0.1:8001/registry/path('registry/', views.registry),]

实现效果

第二个设计—导入和使用Bootstrap的导航栏
基础资源下载地址以及网页详情

导航条资源路径

index.html
<!DOCTYPE html>{% load static %}<html lang="en"><head><meta charset="UTF-8"><title>首页</title><link rel="stylesheet" href="{% static '/static/blog/bs/css/bootstrap.css' %}"><script src="{% static '/static/js/bootstrap.min.js' %}"></script><script src="{% static '/static/js/jquery-3.6.0.min.js' %}"></script></head><body>{#打印登录者的信息#}<h3>欢迎您{{ request.user.username }}</h3><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="#">Brand</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="#">Link <span class="sr-only">(current)</span></a></li><li><a href="#">Link</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="#">Action</a></li><li><a href="#">Another action</a></li><li><a href="#">Something else here</a></li><li role="separator" class="divider"></li><li><a href="#">Separated link</a></li><li role="separator" class="divider"></li><li><a href="#">One more separated link</a></li></ul></li></ul><form class="navbar-form navbar-left"><div class="form-group"><input type="text" class="form-control" placeholder="Search"></div><button type="submit" class="btn btn-default">Submit</button></form><ul class="nav navbar-nav navbar-right"><li><a href="#">Link</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="#">Action</a></li><li><a href="#">Another action</a></li><li><a href="#">Something else here</a></li><li role="separator" class="divider"></li><li><a href="#">Separated link</a></li></ul></li></ul></div><!-- /.navbar-collapse --></div><!-- /.container-fluid --></nav></body></html>
实现效果

代码微调
<!DOCTYPE html>{% load static %}<html lang="en"><head><meta charset="UTF-8"><title>首页</title><link rel="stylesheet" href="{% static '/static/blog/bs/css/bootstrap.css' %}"><script src="{% static '/static/js/bootstrap.min.js' %}"></script><script src="{% static '/static/js/jquery-3.6.0.min.js' %}"></script></head><body>{#打印登录者的信息#}<h3>欢迎您{{ request.user.username }}</h3><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"><li><a href="#">新闻</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">Dropdown <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="#">Separated link</a></li></ul></li></ul></div><!-- /.navbar-collapse --></div><!-- /.container-fluid --></nav></body></html>
实现效果

前端报错[Uncaught Error: Bootstrap’s JavaScript requires jQuery]
解决策略—更换js和bootstrap的顺序
<!DOCTYPE html>{% load static %}<html lang="en"><head><meta charset="UTF-8"><title>首页</title><script src="{% static '/static/js/jquery-3.6.0.min.js' %}"></script><link rel="stylesheet" href="{% static '/static/blog/bs/css/bootstrap.css' %}"><script src="{% static '/static/js/bootstrap.min.js' %}"></script></head><body>{#打印登录者的信息#}<h3>欢迎您{{ request.user.username }}</h3><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"><li><a href="#">新闻</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">Dropdown <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="#">Separated link</a></li></ul></li></ul></div><!-- /.navbar-collapse --></div><!-- /.container-fluid --></nav></body></html>
参考教程
最终效果—下拉菜单正常

第三个设计—-增加对用户登录状态的判断
index.html页面源码
<!DOCTYPE html>{% load static %}<html lang="en"><head><meta charset="UTF-8"><title>首页</title><script src="{% static '/static/js/jquery-3.6.0.min.js' %}"></script><link rel="stylesheet" href="{% static '/static/blog/bs/css/bootstrap.css' %}"><script src="{% static '/static/js/bootstrap.min.js' %}"></script></head><body>{#打印登录者的信息#}<h3>欢迎您{{ request.user.username }}</h3><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="#">{{ 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="/registry/">注册</a></li>{% endif %}<li><a href="#">新闻</a></li></ul></div><!-- /.navbar-collapse --></div><!-- /.container-fluid --></nav></body></html>
相对代码关系

删除会话记录重新登录

最终实现效果

第四个设计—注销后跳转登录页面
index.html页面源码[42]
<!DOCTYPE html>{% load static %}<html lang="en"><head><meta charset="UTF-8"><title>首页</title><script src="{% static '/static/js/jquery-3.6.0.min.js' %}"></script><link rel="stylesheet" href="{% static '/static/blog/bs/css/bootstrap.css' %}"><script src="{% static '/static/js/bootstrap.min.js' %}"></script></head><body>{#打印登录者的信息#}<h3>欢迎您{{ request.user.username }}</h3><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="#">{{ 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="/registry/">注册</a></li>{% endif %}</ul></div><!-- /.navbar-collapse --></div><!-- /.container-fluid --></nav></body></html>
关联操作
1. views.pyfrom django.contrib import authdef logout(request):auth.logout(request) # 等同于request.session.flush# return redirect("templates/blog/login.html")return redirect("/login/")2. urls.py[19]from django.contrib import adminfrom django.urls import path, include, re_pathfrom django.conf import settingsfrom django.conf.urls.static import staticfrom blog import viewsurlpatterns = [path('admin/', admin.site.urls),path('summernote/', include('django_summernote.urls')),# http://127.0.0.1:8001/login/path('login/', views.login),# http://127.0.0.1:8001/logout/path('logout/', views.logout),path('get_validCode_img/', views.get_validCode_img),# http://127.0.0.1:8001/index/path('index/', views.index),# http://127.0.0.1:8001/re_path('^$', views.index),# http://127.0.0.1:8001/registry/path('registry/', views.registry),]
踩坑
redirect的参数应该是网页片段,而不是H5文件
第五个设计—增加首页用户旁边的小图标
index.html页面代码[44 & 10-16]
<!DOCTYPE html>{% load static %}<html lang="en"><head><meta charset="UTF-8"><title>首页</title><script src="{% static '/static/js/jquery-3.6.0.min.js' %}"></script><link rel="stylesheet" href="{% static '/static/blog/bs/css/bootstrap.css' %}"><script src="{% static '/static/js/bootstrap.min.js' %}"></script><style>#user_icon {font-size: 18px;margin-right: 10px;vertical-align: -3px;}</style></head><body>{#打印登录者的信息#}<h3>欢迎您{{ request.user.username }}</h3><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="/registry/">注册</a></li>{% endif %}</ul></div><!-- /.navbar-collapse --></div><!-- /.container-fluid --></nav></body></html>
实现效果

第六个设计—主体页面布局
新增代码的填充区域

第一次修改的预期页面

对应代码

第二次代码修改—增加左侧面板

后端代码

第三次代码添加—增加右侧面板

后端代码

第七个设计—使用admin注册数据表[为导入文章数据做准备]
admin.py代码
from django.contrib import adminfrom django_summernote.admin import SummernoteModelAdminfrom django.contrib.auth.admin import UserAdminfrom .models import UserInfo, Blog, Category, Tag, Article2Tag, Article, ArticleUpDown, Commentclass BlogModelAdmin(SummernoteModelAdmin):summernote_fields = ('title')admin.site.register(UserInfo)admin.site.register(Blog)admin.site.register(Category)admin.site.register(Tag)admin.site.register(Article2Tag)admin.site.register(Article)admin.site.register(ArticleUpDown)admin.site.register(Comment)# Register your models here.
效果展示


问题记录
数据库用户表查看


前端报错

尝试解决—更改表结构
更改前

更改后

迁移失败,删除所有表结构重新迁移再添加字段
第八个设计—添加数据
后台添加blog对象


在UserInfo修改用户信息[绑定用户与个人站点]

在Article中添加文章[绑定文章,作者,用户站点]

第九个设计—文章列表的渲染
views.py中的操作
def index(request):"""需要导入整个models模块,然后导出所有的文章文章数据从models提取出来,然后由views视图将数据渲染的时候传递给首页index,首页index再进行相关的渲染"""article_list = models.Article.objects.all()return render(request, "blog/index.html", {"article_list":article_list})
index.html中的代码
显示文章列表
<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>{% endfor %}</div></div>
定位

实现效果

显示作者及头像
在admin中为用户选取头像

从数据库中userinfo中获取头像以及用户名

提取并且展示摘要

关键代码

设置头像左移,详情右移
关键代码

显示效果

设置分界线
关键代码—循环结束后设置

显示效果

第十个设计—详情补充
添加blog作者
关键代码

实现效果

显示创建时间并且指定显示格式
后端代码

实现效果

添加评论图标
关键代码[106]
<!DOCTYPE html>{% load static %}<html lang="en"><head><meta charset="UTF-8"><title>首页</title><script src="{% static '/static/js/jquery-3.6.0.min.js' %}"></script><link rel="stylesheet" href="{% static '/static/blog/bs/css/bootstrap.css' %}"><script src="{% static '/static/js/bootstrap.min.js' %}"></script><style>#user_icon {font-size: 18px;margin-right: 10px;vertical-align: -3px;}</style></head><body>{#打印登录者的信息#}<h3>欢迎您{{ request.user.username }}</h3><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="/registry/">注册</a></li>{% endif %}</ul></div><!-- /.navbar-collapse --></div><!-- /.container-fluid --></nav><div class="container-fluid"><div class="row"><div class="col-md-3"><div class="panel panel-warning"><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 class="panel panel-danger"><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="60" height="60" src="/media/{{ article.user.avatar }}" alt=""></a></span><span class="media-right">{{ article.desc }}</span></div></div><div><span><a href="">{{ article.user.username }}</a></span> <span>发布于 {{ article.create_time|date:"Y-m-d H:i" }}</span> <span class="glyphicon glyphicon-comment">评论({{ article.comment_count }})</span> </div><hr>{% endfor %}</div></div><div class="col-md-3"><div class="panel panel-primary"><div class="panel-heading">Panel heading without title</div><div class="panel-body">Panel content</div></div><div class="panel panel-default"><div class="panel-heading">Panel heading without title</div><div class="panel-body">Panel content</div></div></div></div></div></body></html>
关键区域

显示效果

添加点赞图标以及数量
关键代码区

关键代码[107]
<!DOCTYPE html>{% load static %}<html lang="en"><head><meta charset="UTF-8"><title>首页</title><script src="{% static '/static/js/jquery-3.6.0.min.js' %}"></script><link rel="stylesheet" href="{% static '/static/blog/bs/css/bootstrap.css' %}"><script src="{% static '/static/js/bootstrap.min.js' %}"></script><style>#user_icon {font-size: 18px;margin-right: 10px;vertical-align: -3px;}</style></head><body>{#打印登录者的信息#}<h3>欢迎您{{ request.user.username }}</h3><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="/registry/">注册</a></li>{% endif %}</ul></div><!-- /.navbar-collapse --></div><!-- /.container-fluid --></nav><div class="container-fluid"><div class="row"><div class="col-md-3"><div class="panel panel-warning"><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 class="panel panel-danger"><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="60" height="60" src="/media/{{ article.user.avatar }}" alt=""></a></span><span class="media-right">{{ article.desc }}</span></div></div><div><span><a href="">{{ article.user.username }}</a></span> <span>发布于 {{ article.create_time|date:"Y-m-d H:i" }}</span> <span class="glyphicon glyphicon-comment">评论({{ article.comment_count }})</span> <span class="glyphicon glyphicon-thumbs-up">评论({{ article.up_count }})</span> </div><hr>{% endfor %}</div></div><div class="col-md-3"><div class="panel panel-primary"><div class="panel-heading">Panel heading without title</div><div class="panel-body">Panel content</div></div><div class="panel panel-default"><div class="panel-heading">Panel heading without title</div><div class="panel-body">Panel content</div></div></div></div></div></body></html>
实现效果

修改详情文字与信息展示条文字的对比度
代码区

关键代码[103]
<!DOCTYPE html>{% load static %}<html lang="en"><head><meta charset="UTF-8"><title>首页</title><script src="{% static '/static/js/jquery-3.6.0.min.js' %}"></script><link rel="stylesheet" href="{% static '/static/blog/bs/css/bootstrap.css' %}"><script src="{% static '/static/js/bootstrap.min.js' %}"></script><style>#user_icon {font-size: 18px;margin-right: 10px;vertical-align: -3px;}</style></head><body>{#打印登录者的信息#}<h3>欢迎您{{ request.user.username }}</h3><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="/registry/">注册</a></li>{% endif %}</ul></div><!-- /.navbar-collapse --></div><!-- /.container-fluid --></nav><div class="container-fluid"><div class="row"><div class="col-md-3"><div class="panel panel-warning"><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 class="panel panel-danger"><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="60" height="60" src="/media/{{ article.user.avatar }}" alt=""></a></span><span class="media-right">{{ article.desc }}</span></div></div><div class="small"><span><a href="">{{ article.user.username }}</a></span> <span>发布于 {{ article.create_time|date:"Y-m-d H:i" }}</span> <span class="glyphicon glyphicon-comment">评论({{ article.comment_count }})</span> <span class="glyphicon glyphicon-thumbs-up">评论({{ article.up_count }})</span> </div><hr>{% endfor %}</div></div><div class="col-md-3"><div class="panel panel-primary"><div class="panel-heading">Panel heading without title</div><div class="panel-body">Panel content</div></div><div class="panel panel-default"><div class="panel-heading">Panel heading without title</div><div class="panel-body">Panel content</div></div></div></div></div></body></html>
展示效果

调节详情条的高度
关键代码区域[需要将内容放置在span标签外,然后才能分别设置图标和整个详情条]


关键代码[16-21 / 112&113]
<!DOCTYPE html>{% load static %}<html lang="en"><head><meta charset="UTF-8"><title>首页</title><script src="{% static '/static/js/jquery-3.6.0.min.js' %}"></script><link rel="stylesheet" href="{% static '/static/blog/bs/css/bootstrap.css' %}"><script src="{% static '/static/js/bootstrap.min.js' %}"></script><style>#user_icon {font-size: 18px;margin-right: 10px;vertical-align: -3px;}.pub_info{margin-top: 10px;}.pub_info .glyphicon-comment{vertical-align: -1px;}</style></head><body>{#打印登录者的信息#}<h3>欢迎您{{ request.user.username }}</h3><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="/registry/">注册</a></li>{% endif %}</ul></div><!-- /.navbar-collapse --></div><!-- /.container-fluid --></nav><div class="container-fluid"><div class="row"><div class="col-md-3"><div class="panel panel-warning"><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 class="panel panel-danger"><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="60" height="60" src="/media/{{ article.user.avatar }}" alt=""></a></span><span class="media-right">{{ article.desc }}</span></div></div><div class="small pub_info"><span><a href="">{{ article.user.username }}</a></span> <span>发布于 {{ article.create_time|date:"Y-m-d H:i" }}</span> <span class="glyphicon glyphicon-comment"></span>评论({{ article.comment_count }}) <span class="glyphicon glyphicon-thumbs-up"></span>评论({{ article.up_count }}) </div><hr>{% endfor %}</div></div><div class="col-md-3"><div class="panel panel-primary"><div class="panel-heading">Panel heading without title</div><div class="panel-body">Panel content</div></div><div class="panel panel-default"><div class="panel-heading">Panel heading without title</div><div class="panel-body">Panel content</div></div></div></div></div></body></html>
显示效果

