• 潭州课堂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('轮播图优先级异常: {}'.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 循环迭代,依次显示出标题,创建时间取出

    删除:基本同上



  • 相关阅读:
    副业收入是我做程序员的2倍!副业这么有 “钱”景,我要考虑转行吗?
    C语言丨const关键字的用法详解
    C/C++学习笔记:C/C++函数调用的方式,你应该要学会这五种
    软件崩溃了,该如何解决? 解决问题的关键要会对症下药!
    C语言丨深入理解volatile关键字
    C语言丨getch(),getche()和getchar()的区别
    学编程的误区——眼高手低,不重视练习!
    通过编写“猜测数字”游戏来探索Linux中的Bash
    零基础想要更快入门Linux?找对方法,让你少奋斗10年!
    VS/VC 出现闪退怎么办?这4个技巧要知道!
  • 原文地址:https://www.cnblogs.com/gdwz922/p/10280361.html
Copyright © 2020-2023  润新知