g更改标签:,前台要向后台传来 id, name,

对标签进行校验:标签不能为空,标签是否已经存在,

流程:

    def put(self, request, tag_id):
'''
更改标签
:param request:
:return:
'''
# 拿到前台传来的参数
try:
json_data = request.body
if not json_data:
return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR])
except Exception as e:
logging.info('错误信息:{}'.format(e)
return to_json_data(errno=Code.UNKOWNERR, errmsg=error_map.[Code.UNKOWNERR])
# 将json转化为dict
dict_data = json.loads(json_data.decode('utf8'))
tag_name = dict_data.get('name') tag = models.Tag.objects.only().filter(id=tag_id).first()
if tag:
# 清洗去空格
if tag_name and tag_name.strip():
# 如果新命名的 name 在标签中不存在
if not models.Tag.objects.only('name').filter(name=tag_name).exists():
# 把新的 name 给存入
tag.name = tag_name
tag.save(update_fields=['name']) # 优化措施
return to_json_data(errmsg='标签更改成功')
else: return to_json_data(errno=Code.PARAMERR,errmsg='该标签已经存在')
else: return to_json_data(errno=Code.PARAMERR,errmsg='标签名不能为空')
else: return to_json_data(errno=Code.PARAMERR,errmsg='您要更改的标签不存在')

  

新增标签:

前台向后台传参数: name: 判断是否存在,不存在才能创建 :

url 请求:post

    def post(self, request):
'''
添加新标签
:param request:
:return:
'''
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'))
tag_name = dict_data.get('name')
# 清洗去空格
if tag_name and tag_name.strip():
# 如果存在,取出来,如果不存在,创建一个
# 返回是个元祖
tag_up = models.Tag.objects.get_or_create(name=tag_name)
# tag_bole 第二个元素如果是 False,说明 name 存在,并取出
# 如果是 True 创建
# tag_inst 查询集
tag_inst, tag_bole = tag_up # 来着构造一个字典
new_tag_dist = {
'id':tag_inst.id,
'name':tag_inst.name
}
return to_json_data(errmsg='标签创建成功', data=new_tag_dist) if tag_bole else \
to_json_data(errno=Code.DATAEXIST, errmsg='标签已存在') else:return to_json_data(errno=Code.PARAMERR, errmsg='标签名不能为空')

  

给查询,创建 标签方法放在一个类里,删除,更改标签方法放到另一个类中,

一个类里最好不要有两个 get 请求,get 和 put 请求不要在一个灰中,

import json
import logging
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 logger = logging.getLogger('django') 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 post(self, request):
'''
添加新标签
:param request:
:return:
'''
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'))
tag_name = dict_data.get('name')
# 清洗去空格
if tag_name:
tag_name = tag_name.strip()
# 如果存在,取出来,如果不存在,创建一个
# 返回是个元祖
tag_up = models.Tag.objects.get_or_create(name=tag_name)
# tag_bole 第二个元素如果是 False,说明 name 存在,并取出
# 如果是 True 创建
# tag_inst 查询集
tag_inst, tag_bole = tag_up # 来着构造一个字典
new_tag_dist = {
'id':tag_inst.id,
'name':tag_inst.name
}
return to_json_data(errmsg='标签创建成功', data=new_tag_dist) if tag_bole else \
to_json_data(errno=Code.DATAEXIST, errmsg='标签已存在') else:return to_json_data(errno=Code.PARAMERR, errmsg='标签名不能为空') class TagEdit(View):
'''
删除,更改,标签类
/admin/tags
'''
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='您要删除的标签不存在') def put(self, request, tag_id):
'''
更改标签
:param request:
:return:
'''
# 拿到前台传来的参数
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'))
tag_name = dict_data.get('name') tag = models.Tag.objects.only().filter(id=tag_id).first()
if tag:
# 清洗去空格
if tag_name :
tag_name = tag_name.strip()
# 如果新命名的 name 在标签中不存在
if not models.Tag.objects.only('name').filter(name=tag_name).exists():
# 把新的 name 给存入
tag.name = tag_name
tag.save(update_fields=['name']) # 优化措施
return to_json_data(errmsg='标签更改成功')
else: return to_json_data(errno=Code.PARAMERR,errmsg='该标签已经存在')
else: return to_json_data(errno=Code.PARAMERR,errmsg='标签名不能为空')
else: return to_json_data(errno=Code.PARAMERR,errmsg='您要更改的标签不存在')

  

潭州课堂25班:Ph201805201 django 项目 第三十四课 后台文章标签更新功能 ,创建功能实现(课堂笔记)的更多相关文章

  1. 潭州课堂25班:Ph201805201 django 项目 第三十八课 后台 文章发布,FastDFS安装 配置(课堂笔记)

    , .安装FastDFS # 从docker hub中拉取fastdfs镜像docker pull youkou1/fastdfs # 查看镜像是否拉取成功docker images # 安装trac ...

  2. 潭州课堂25班:Ph201805201 django 项目 第三十九课 后台 文章发布,图片上传到 FastDFS后端实现 七牛云讲解(课堂笔记)

    文章发布: # 1,从前台获取参数# 2,校验参数# 3,把数据保存到数据库# 4,返回执行结果到前台,(创建成功或失败) 自定义 froms.py 校验参数 上传图片到七牛云 注册 https:// ...

  3. 潭州课堂25班:Ph201805201 django 项目 第三十六课 后台文章管理(课堂笔记)

    get 请求, 1,获取文章标签 , 2,拿到前台传来的值, 3,根据前台传来的值在数据库中查询 4.,返回数据到前台,渲染, 分页算法 : 在 utils 下创建  paginator_script ...

  4. 潭州课堂25班:Ph201805201 django 项目 第三十二课 后台站点管理(课堂笔记)

    一.后台站点模版抽取 1.获取静态站点模版 可以使用git clone到本地 git clone https://github.com/almasaeed2010/AdminLTE.git 也可以在g ...

  5. 潭州课堂25班:Ph201805201 django 项目 第三十五课 后台用户权限的添加 mixins 课堂笔记)

    验证用户登录: 对一个视图函数进行登录权限验证,(登录后才可以访问,否则重定向到登录页面) #from django.contrib.auth.decorators import login_requ ...

  6. 潭州课堂25班:Ph201805201 django 项目 第三十课 linux 系统迁移 (课堂笔记)

    进入虚拟环境, 冷冻 把安装环境放到这个文档中 pip freeze >> requirements.txt 在另一台机器中 pip install -r requirements.txt ...

  7. 潭州课堂25班:Ph201805201 django 项目 第三十一课 在线课堂视频点播的实现(课堂笔记)

    在线课堂 一.数据库模型设计 # 在apps/course/models.py中定义如下模型: from django.db import models from utils.models impor ...

  8. 潭州课堂25班:Ph201805201 django 项目 第三课 码云注册,django项目 (课堂笔记)

    d码云注册,登录, 创建项目: 生成秘钥 想看秘钥: 添加公钥 复制 ssh 连接 通过  git clone <ssh> 连接 在服务器上创建 python3 虚拟环境, 创建项目  p ...

  9. 潭州课堂25班:Ph201805201 django 项目 第三十三课 后台文章标签查询提交到前台,删除功能实现(课堂笔记)

    在视图中创建个类,要实现此功能,并把结果返回前台 , from django.shortcuts import render from django.views import View from dj ...

随机推荐

  1. easyui组件window拖动时超过浏览器顶部则无法拖回

    项目研发过程中遇到一个问题,easyui的window可以随意拖动或者放大缩小,但是鼠标只有放在“header”上面时鼠标箭头才会变成四个方向的箭头,也就是只有在这时才能拖动窗口:但是当拖动的窗口超过 ...

  2. asp.net core 图片验证码,后台验证

    验证方法: public static string VerificationCodeCacheFormat="vcode_cache_{0}"; public IActionRe ...

  3. 饮冰三年-人工智能-linux-03 Linux文件管理(权限管理+归档+压缩)

    1:对文件的权限管理 drwxr-xr-x. 最后一个.表示在安全情况下创建的.selinux a: d表示目录:-表示普通文件:l表示快捷方式:b设备文件 b:- 属主的权限 r:读权限:w:写权限 ...

  4. 无废话-API-01

    说明 我的开发环境:VS2013 浏览器:谷歌浏览器(Google Chrome) 1创建项目 1.1添加一个 应用程序"ASP.NET MVC 4 Web 应用程序"  1.2选 ...

  5. js调试console.log使用总结图解

    一 实例 打印字符串和对象: 可展开对象查看内部情况: 看一下console对象本身的定义情况: 输出对象情况: utag对象所在文件: 输出对象: 二 Console.log 总结 1   如果你j ...

  6. ElasticSearch简要总览

    今天看了一下ElasticSearch的相关文档,我做了如下总结: 发现越来越喜欢画图归纳总结知识了,看图说话 集群特性说明 健康状况的说明 如何配置分片? 接下来一张图总结下操作相关的总结 接下来, ...

  7. Encountered IOException running import job: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://slaver1:9000/user/hadoop/tb_user already exists

    1.当时初学Sqoop的时候,mysql导入到hdfs导入命令执行以后,在hdfs上面没有找到对应的数据,今天根据这个bug,顺便解决这个问题吧,之前写的http://www.cnblogs.com/ ...

  8. Zabbix 3.2.6通过SNMP和iDRAC监控DELL服务器

    https://www.cnblogs.com/saneri/p/7772641.html

  9. gcc make 与cmake

    1. gcc (1)是什么? 它是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器.它可以编译很多种编程语言(括C.C++.Objective-C.For ...

  10. Python_subprocess模块

    subprocess中,允许生成新的进程,连接到input/output/error管道,并获取他们的返回(状态)码,主要用于替换os.system/os.spawn*几个旧的模块和方法 subpro ...