潭州课堂25班:Ph201805201 django 项目 第四十一课 后台 轮播图管理功能讲解,文档管理功能 实现 (课堂笔记)
在进入轮播图管理页面时,要把轮播图显示在页面上,所以后台要向前台返回:
图片路由,:image_url
优先级: priority
def get(self, request):
# priority = models.Banner.PRI_CHOICEH
# priority = tuple([models.Banner.PRI_CHOICEH])
# 优先级 以字典形式返回 OrderedDict 将元祖 转为有序的字典,
priority = OrderedDict(models.Banner.PRI_CHOICEH)
rotation_chart = models.Banner.objects.only('image_url', 'priority').filter(is_delete=False)
return render(request, 'admin/news/news_banner.html', locals()) 删除:
前台要向后台传个轮播图的 id ,
后台根据 id 在数据库中查询,查询到之后,将 is_delete 字段改为 0 ,并保存,
def delete(self, request, banner_id):
rotation_char = models.Banner.objects.only('id').filter(id=banner_id).first()
if rotation_char:
# 删除
rotation_char.is_delete = True
# 针对性保存
rotation_char.save(update_fields=['is_delete'])
return to_json_data(errmsg="轮播图删除成功") else: return to_json_data(errno=Code.PARAMERR, errmsg="需要删除的轮播图不存在") 修改更新:可能更改的字段:
优先级:priority
图片,image_url
def put(self, request, banner_id):
# 更改轮播图
rotation_char = models.Banner.objects.filter(id=banner_id).first()
if rotation_char:
json_data = request.body
if not json_data:
return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR])
# 将json转化为dict
dict_data = json.loads(json_data.decode('utf8'))
try:
priority = int(dict_data.get('priority'))
# 优先级,把中文返回到前台
priority_list = [i for i, _ in models.Banner.PRI_CHOICEH]
if priority not in priority_list:
return to_json_data(errno=Code.PARAMERR, errmsg='轮播图的优先级设置错误')
except Exception as e:
logger.info('轮播图优先级异常:{}'.format(e))
return to_json_data(errno=Code.PARAMERR, errmsg='轮播图的优先级设置错误')
image_url = dict_data.get('image_url')
if image_url:
if rotation_char.priority != priority and rotation_char.image_url != image_url:
# 保存更改
rotation_char.priority = priority
rotation_char.image_url = image_url
rotation_char.save(update_fields=['priority', 'image_url'])
return to_json_data(errmsg="更新成功") else:return to_json_data(errno=Code.PARAMERR, errmsg="参数未改变")
else:return to_json_data(errno=Code.PARAMERR, errmsg='url为空')
else: return to_json_data(errno=Code.PARAMERR, errmsg="需要更新的轮播图不存在") 添加轮播图:这里是个新的页面,在这页面中要显示所有的分类,优先级,做可选框,
def get(self, request):
# 把文章分类选择框,文章选择框,优先级别选择框显示出来
tags = models.Tag.objects.values('id', 'name').annotate(num_news=Count('news')). filter(is_delete=False).order_by('-num_news', 'update_time')
# 优先级 以字典形式返回 OrderedDict 将元祖 转为有序的字典,
priority_dict = OrderedDict(models.Banner.PRI_CHOICEH)
return render(request, 'admin/news/news_banner_add.html', locals()) 添加操作:主要对数据判断,只有符合要求才进行保存的操作
def post(self, request):
# 添加新的轮播图
json_data = request.body
if not json_data:
return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR])
# 将json转化为dict
dict_data = json.loads(json_data.decode('utf8')) try:
news_id = int(dict_data.get('news_id'))
except Exception as e:
logger.info('参数错误:{}'.format(e))
return to_json_data(errno=Code.PARAMERR, errmsg='参数错误') if models.News.objects.filter(id=news_id).exists():
try:
priority = int(dict_data.get('priority'))
# 图片优先级,的数字
priority_list = [i for i, _ in models.Banner.PRI_CHOICEH]
if priority not in priority_list:
return to_json_data(errno=Code.PARAMERR, errmsg='轮播图的优先级设置错误')
except Exception as e:
logger.info('轮播图优先级异常:\n{}'.format(e))
return to_json_data(errno=Code.PARAMERR, errmsg='轮播图的优先级设置错误')
# 获取轮播图url
image_url = dict_data.get('image_url')
if image_url:
# 创建轮播图
# 没有则创建 ,有则取出
rotation_char_tuple = models.Banner.objects.get_or_create(news_id=news_id)
# is_created 第二个元素如果是 False,说明 存在,并取出
# 如果是 True 创建
# rotation_char 查询集
rotation_char, is_created = rotation_char_tuple
rotation_char.priority = priority
rotation_char.image_url = image_url
# 针对性保存
rotation_char.save(update_fields=['priority', 'image_url'])
return to_json_data(errmsg="轮播图创建成功")
else: return to_json_data(errno=Code.PARAMERR, errmsg='轮播图url为空')
else: return to_json_data(errno=Code.PARAMERR, errmsg='文章不存在')
文档相关 与上边的类似 把文档标题,创建时间显示到页面上
def get(self, request):
# 把文档数据库中的标题,创建时间取出
docs = Doc.objects.only('title', 'create_time').filter(is_delete=False)
return render(request, 'admin/doc/docs_manage.html', locals())
docs 传到前台 for 循环迭代,依次显示出标题,创建时间取出 删除:基本同上
潭州课堂25班:Ph201805201 django 项目 第四十一课 后台 轮播图管理功能讲解,文档管理功能 实现 (课堂笔记)的更多相关文章
- 第二百五十一节,Bootstrap项目实战--响应式轮播图
Bootstrap项目实战--响应式轮播图 学习要点: 1.响应式轮播图 本节课我们要在导航条的下方做一张轮播图,自动播放最新的重要动态. 一.响应式轮播图 响应式轮播图 第一步,设置轮播器区域car ...
- 潭州课堂25班:Ph201805201 django 项目 第一课 (课堂笔记)
一.Django 现状 1.Django开发前景 1.1 老师做过的项目 项目图展示: 1.2 Django的厉害之处 在python中,与web开发环境相关的包有13045个 ...
- day76:luffy:项目前端环境搭建&轮播图的实现
目录 1.项目前端环境搭建 1.创建项目目录 2.前端初始化全局变量和全局方法 3.跨域CORS 4.axios配置 2.轮播图功能的实现 1.安装依赖模块 2.上传文件相关配置 3.注册home子应 ...
- Bootstrap 学习笔记 项目实战 响应式轮播图
左右两个箭头可以随浏览器缩放进行移动 保持在图片中间 Html代码: <!DOCTYPE html> <html lang="zh-cn"> <hea ...
- 潭州课堂25班:Ph201805201 django 项目 第九课 图片验证码前台实现,判断用户是否注册功能实现 (课堂笔记)
u胎代码实现 : 针对每一个 app 写个 js 脚本, 先给 users 的 app 应用创建个 js:在指定目录下的 js 文件夹下,创建 users 文件夹,下创建 suth.js ,图片验证 ...
- 潭州课堂25班:Ph201805201 django 项目 第二课 git 版本控制 (课堂笔记)
安装 git sudo apt-get install git 查看版本信息: git --version 演示: 创建个项目 创建文件夹 如果要对这个文件夹进行版本控制 先进到这个文件夹中, 命令查 ...
- 潭州课堂25班:Ph201805201 django 项目 第三十二课 后台站点管理(课堂笔记)
一.后台站点模版抽取 1.获取静态站点模版 可以使用git clone到本地 git clone https://github.com/almasaeed2010/AdminLTE.git 也可以在g ...
- 潭州课堂25班:Ph201805201 django 项目 第二十九课 docker实例,文件下载前后台实现 (课堂笔记)
docker 实例 :wq!保存退出 放入一个 html 文件 权限不够,加 sudo 查看本地仓库的 image 运行 docker -- name,后跟个运行名, -p 物理机端口映射到容器端口, ...
- 5 项目---自定义用户模型以及轮播图图片url返回格式
创建自定义的用户模型类 1. 用命令创建users 应用 2. 将users 注册到settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'd ...
随机推荐
- oracle 备份脚本
本文是一个shell脚本.主要用于Oracle 数据库备份.默认情况下,在周一晚上进行全备.其他时间进行累积增量备份. 使用方法: 假如脚本保存名为: oracle_backup.sh 使用方法为 o ...
- win10ssh连接ubuntu服务器并本地绘图
update @ 2018-11-07 00:36:38 用xrdp+tigervnc等的组合,可以使用原生unity桌面.具体教程见ubuntu日常使用指南 工具准备 win10上: xshell, ...
- 解决Windows Server 2008R2通过计划任务定时执行bat文件,显示成功但实际未执行
前段时间在Windows Server 2008安装了一套基于MySQL数据库的软件,处于数据安全的考虑,希望每天能够自动进行数据库备份.我在别人脚本的基础上自己写了一个数据库备份的bat脚本,双击该 ...
- IIS中配置访问HTTPS
1,新建网站,选中类型为 https,然后更改SSL证书为你配置的SSL证书, 对于SSL证书的配置是这样的 点开第二步,然后点击 创建自签名证书 确定以后点开网站看到有个SSL, 双击进去,再选中 ...
- 一脸懵逼学习oracle
oracle的默认用户:system,sys,scott: 1:查看登录的用户名:show user: 2:查看数据字典:dba_users; 3:创建新用户 (1)要连接到Oracle数据库,就需要 ...
- Spring boot国际化
国际化主要是引入了MessageSource,我们简单看下如何使用,以及其原理. 1.1 设置资源文件 在 properties新建i18n目录 新建message文件: messages.prope ...
- 基于nopcommerce b2c开源项目的精简版开发框架Nop.Framework
http://www.17ky.net/soft/70612.html?v=1#0-sqq-1-39009-9737f6f9e09dfaf5d3fd14d775bfee85 项目详细介绍 该开源项目是 ...
- Flink的流处理--KeyBy
逻辑上将一个流分成不相交的分区,每个分区包含相同键的元素.在内部,这是通过散列分区来实现的 object Keyby { def main(args: Array[String]): Unit = { ...
- 移动端iscroll实现日期选择
哎,说多了都是泪: 引入相关JS文件 <script type="text/javascript" src="js/jquery-1.9.1.min.js" ...
- BZOJ5291/洛谷P4458/LOJ#2512 [Bjoi2018]链上二次求和 线段树
原文链接http://www.cnblogs.com/zhouzhendong/p/9031130.html 题目传送门 - LOJ#2512 题目传送门 - 洛谷P4458 题目传送门 - BZOJ ...