BBS论坛 后台管理
七、后台管理


后台管理页面:
<!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-default">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<span class="navbar-default h2 pull-left">后台管理</span>
</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 navbar-right">
<li><img src="/media/{{ request.user.avatar }}" alt="" width="45px" class="img-circle"></li>
<li><a href="/{{ request.user.username }}" id="id_username">{{ 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="/set_password/">修改密码</a></li>
<li><a href="/set_avatar/">修改头像</a></li>
<li><a href="/home/">首页</a></li>
<li role="separator" class="divider"></li>
<li><a href="/logout/">注销</a></li>
</ul>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav> <div class="container-fluid">
<div class="row">
<div class="col-md-2">
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="headingOne">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne"
aria-expanded="true" aria-controls="collapseOne">
操作
</a>
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse in" role="tabpanel"
aria-labelledby="headingOne">
<div class="panel-body">
<p><a href="/add_article/">添加新随笔</a></p>
<p><a href="">添加文章</a></p>
<p><a href="">草稿箱</a></p>
</div>
</div>
</div>
</div>
</div> <div class="col-md-10">
<div class="bs-example bs-example-tabs" data-example-id="togglable-tabs">
<ul id="myTabs" class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#home" id="home-tab" role="tab" data-toggle="tab"
aria-controls="home" aria-expanded="true">文章</a></li> <li role="presentation" class=""><a href="#profile" role="tab" id="profile-tab" data-toggle="tab"
aria-controls="profile" aria-expanded="false">随笔</a></li> <li role="presentation" class=""><a href="#dropdown" role="tab" id="dropdown-tab" data-toggle="tab"
aria-controls="dropdown" aria-expanded="false">设置</a></li> <li role="presentation" class=""><a href="#dropdown2" role="tab" id="dropdown2-tab" data-toggle="tab"
aria-controls="dropdown2" aria-expanded="false">更多</a></li>
</ul>
{% block content %}
<div id="myTabContent" class="tab-content">
<div role="tabpanel" class="tab-pane fade active in" id="home" aria-labelledby="home-tab">
<table class="table table-hover table-striped">
<thead>
<tr>
<th>标题</th>
<th>发布日期</th>
<th>评论数</th>
<th>点赞数</th>
<th>操作</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for article in page_queryset %}
<tr>
<td><a href="/{{ article.blog.userinfo.username }}/article/{{ article.pk }}/">{{ article.title }}</a></td>
<td>{{ article.create_time|date:'Y-m-d' }}</td>
<td>{{ article.comment_num }}</td>
<td>{{ article.up_num }}</td>
<td><a href="">编辑</a></td>
<td><a href="">删除</a></td>
</tr> {% endfor %}
</tbody>
</table>
<div class="pull-right">{{ page_obj.page_html|safe }}</div> </div>
<div role="tabpanel" class="tab-pane fade" id="profile" aria-labelledby="profile-tab">
<p>Fpark.</p>
</div>
<div role="tabpanel" class="tab-pane fade" id="dropdown" aria-labelledby="dropdown-tab">
<p>Etsy mray yr.</p>
</div>
<div role="tabpanel" class="tab-pane fade" id="dropdown2" aria-labelledby="dropdown2-tab">
<p>Trust fhey svegan.</p>
</div>
</div>
{% endblock %}
</div>
</div>
</div>
</div> </body>
</html>
backend.html
@login_required
def set_avatar(request):
if request.method == 'POST':
file_obj = request.FILES.get('myfile')
# print(file_obj)
# 修改用户avatar字段
# 1.利用queryset内置方法修改 不行
# models.UserInfo.objects.filter(pk=request.user.pk).update(avatar=file_obj)
# 2.利用对象修改
user_obj = request.user
user_obj.avatar = file_obj
user_obj.save()
return redirect('/home/')
return render(request, 'set_avatar.html')
views.py 设置头像
def upload_img(request):
if request.method == 'POST':
# 将用户上传的图片存入media文件夹以便后续查找
file_obj = request.FILES.get('imgFile')
# 将该文件存入media文件夹
# 1.手动拼接文件存放的路径
path = os.path.join(settings.BASE_DIR, 'media', 'article_img')
# 判断当前路径文件是否存在,不存在自动创建
if not os.path.exists(path):
os.mkdir(path) # 当文件夹不存在时,创建文件夹
file_path = os.path.join(path, file_obj.name)
# 文件操作
with open(file_path, 'wb') as f:
for line in file_obj:
f.write(line)
back_dic = {
"error": 0,
"url": "/media/article_img/%s" % file_obj.name
}
return JsonResponse(back_dic)
return HttpResponse('ok')
views.py 上传图片
@login_required
def backend(request):
article_list = models.Article.objects.filter(blog=request.user.blog)
# 用户想访问的当前页面
current_page = request.GET.get('page', 1)
# 用户总条数
all_count = article_list.count()
page_obj = Pagination(current_page=current_page, all_count=all_count)
# 对数据进行切分
page_queryset = article_list[page_obj.start:page_obj.end] return render(request, 'backend/backend.html', locals())
views.py 后台管理主页
@login_required
def add_article(request):
if request.method == 'POST':
title = request.POST.get('title')
content = request.POST.get('content')
# 将需要处理的文本内容交由该模块生一个soup对象
soup = BeautifulSoup(content, 'html.parser')
tags = soup.find_all()
for tag in tags:
if tag.name == 'script':
# 将识别出的标签中的所有script标签删掉
tag.decompose() # 1.解决xss攻击问题 # 文章简介
desc = soup.text[0:100] # 2.读取前100个字节
# 保存到数据库中
models.Article.objects.create(title=title, content=str(soup), desc=desc, blog=request.user.blog)
return redirect('/backend/')
return render(request, 'backend/add_article.html')
views.py 添加文章
BBS论坛 后台管理的更多相关文章
- 1210 BBS admin后台管理及侧边栏筛选个人站点
目录 昨日内容 django admin后台管理 使用 建表 用户图片的显示 MEDIA用户配置 查找照片 搭建个人站点 防盗链 新建css文件 侧边栏展示标签 定义分类栏与标签栏 定义时间栏 侧边栏 ...
- day75 bbs项目☞后台管理+修改头像
目录 一.后台管理之添加文章 二.修改用户头像 bbs项目总结 一.后台管理之添加文章 添加文章有两个需要注意的问题: 文章的简介切取,应该想办法获取到当前文章的文本内容后再截取字符 XSS攻击,由于 ...
- BBS - 后台管理
一.添加文章 注: 后台管理页面,应该有个新得 app /blog/backend/ # 文章列表页/blog/add_article/ # 添加文章 # 后台管理re_path(r'backend/ ...
- 1211 BBS后台管理文章添加
目录 昨日内容回顾 侧边栏inclusion_tag inclusion_tag的响应 使用 自定义inclusion_tag,标签,过滤器 文章的点赞点踩 前端 后端 校验规则 文章的评论功能 1. ...
- Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源,BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 各种后台管理系统
Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 家庭理财系统 各种后 ...
- BBS项目之后台管理
一:后台管理,添加文章样式编写 创建 一个后台管理模板前段页面 <!DOCTYPE html> <html lang="en"> <head> ...
- 后台管理UI的选择
最近要做一个企业的OA系统,以前一直使用EasyUI,一切都好,但感觉有点土了,想换成现在流行的Bootstrap为基础的后台UI风格,想满足的条件应该达到如下几个: 1.美观.大方.简洁 2.兼容I ...
- 后台管理UI皮肤的选择
后台管理UI的选择 目录 一.EasyUI 二.DWZ JUI 三.HUI 四.BUI 五.Ace Admin 六.Metronic 七.H+ UI 八.Admin LTE 九.INSPINIA 十. ...
- 帝国cms7.0忘记后台管理账户用户名密码
最近刚登陆以前的网站,但是发现自己的后台管理用户名密码已经忘记,于是到帝国cms论坛里面找了一下解决方案,成功解决问题.特此分享一下解决成功经验. 原帖地址:http://bbs.phome.net/ ...
随机推荐
- bootstrapTble 的一些小结
前言: 1.bootstrapTable 官网 http://bootstrap-table.wenzhixin.net.cn/zh-cn/ ,http://bootstrap-table.wenz ...
- Hibernate4教程一:入门介绍
第一部分:Hibernate入门 Hibernate是什么 Hibernate是一个轻量级的ORM框架 ORM原理(Object Relational Mapping) ORM ...
- freemarker在web应用项目的使用
FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP.它不仅可以用作表现层的实现 ...
- list采坑记录一下
List<Integer> cards = Lists.newArrayList(6,10,11,12,21,23,29,30,38,39,42,43,46,51,53,59,60);Li ...
- linux系统物理cpu信息查询
1.查看CPU型号 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 2.查看物理CPU的个数 ca ...
- 创建win32 dll 空项目
动态库,多字节 win32 空项目 添加导出头文件 类 导入: #pragma once #ifndef IP_CLASS_DLL_H #define IP_CLASS_DLL_H #pragma ...
- Allowance
Allowance 有n种数字,第i种数字值为\(v_i\),有\(b_i\)个,保证随i的增大而增大,且对于任意i有\(a_{i-1}|a_i\)(显然,\(i\in(1,n]\)),现求将它们划分 ...
- SqlServer 将表里面的值赋给变量
@@c_beiz varchar(500) select top 1 @c_beiz = c_beiz from g_billd_qh_tmp where u_id=''+@uid+'' and io ...
- spring.xml及注解
spring.xml配置文件中配置注解: 开启注解(及自动扫描包中bean): 1:<context:component-scan base-package="com.bzu" ...
- CSS Id 和 Class
id 和 class 选择器 如果你要在HTML元素中设置CSS样式,你需要在元素中设置"id" 和 "class"选择器.直线电机哪家好 id 选择器 id ...