潭州课堂25班:Ph201805201 django 项目 第三十三课 后台文章标签功能实现(课堂笔记)

在视图中创建个类,要实现此功能,并把结果返回前台 ,

from django.shortcuts import render
from django.views import View
from django.db.models import  Count      # django自带的计算

from ..news import models                # 导入相关数据库
from utils.json_fun import to_json_data
from utils.res_code import Code,error_map

# Create your views here.

class  Index(View):
    '''
    创建 admin 主页视图
    '''
    def get(self, request):
        return render(request, 'admin/index/index.html')


class  TagManager(View):
    '''
    创建标签管理视图
    /admin/tags/
    '''
    def get(self, request):
        #      查询新闻分类表 did,类名,及类下的新闻文章总数
        #      跟上条件:没有被逻辑删除的,排序:文章总数,修改时间,
        tags = models.Tag.objects.values('id', 'name').annotate(num_news=Count('news')).\
            filter(is_delete=False).order_by('-num_news', '-update_time')

        return render(request, 'admin/news/tags_manage.html', locals())

    def delete(self, request, tag_id):
        # 删除
        tag = models.Tag.objects.only('id').filter(is_delete=False, id=tag_id).first()
        if tag:
            # tag.delete()   # 真的删除
            # 逻辑删除
            tag.is_delete = True
            # tag.save()
            tag.save(update_fields=['is_delete'])           # 优化措施:只对指定字段保存
            return to_json_data(errmsg='标签删除成功')
        else:
            return to_json_data(errno=Code.PARAMERR,errmsg='您要删除的标签不存在')

  

在  admin/news/tags_manage.html  文件

猜你喜欢

转载自www.cnblogs.com/gdwz922/p/10224043.html