def delete(self, request, news_id): news = News.objects.only('id').filter(id=news_id).first() if news: news.delete() return res_json(errmsg='删除文章更新成功') else: return res_json(errno=Code.PARAMERR, errmsg='需要删除的文章不存在')
def delete(self, request, tag_id): tag = Tag.objects.only('id').filter(id=tag_id).first() if tag: tag.delete() return res_json(errmsg='删除标签更新成功') else: return res_json(errno=Code.PARAMERR, errmsg='需要删除的标签不存在')
def post(self, request): """ 获取表单数据 数据清洗/判断是否合法 保存到数据库 :param request: :return: """ json_str = request.body if not json_str: res_json(errno=Code.PARAMERR, errmsg='参数错误') dict_data = json.loads(json_str) # 数据清洗 form = NewsPubForm(data=dict_data) if form.is_valid(): # 对于作者更新对于的新闻, 知道新闻是哪个作者发布的 # 创建实例 不保存到数据库 newss = form.save(commit=False) newss.author_id = request.user.id newss.save() return res_json(errmsg='文章发布成功') else: err_m_l = [] for i in form.errors.values(): err_m_l.append(i[0]) err_msg_str = '/'.join(err_m_l) return res_json(errno=Code.PARAMERR, errmsg=err_msg_str)
def put(self, request, news_id): news = News.objects.filter(id=news_id, is_delete=False).first() if not news: return res_json(errno=Code.PARAMERR, errmsg='参数错误') js_str = request.body if not js_str: return res_json(errno=Code.PARAMERR, errmsg='参数错误') dict_data = json.loads(js_str) # 清洗数据 form = NewsPubForm(data=dict_data) if form.is_valid(): # True False news.title = form.cleaned_data.get('title') news.digest = form.cleaned_data.get('digest') news.tag = form.cleaned_data.get('tag') news.image_url = form.cleaned_data.get('image_url') news.content = form.cleaned_data.get('content') news.save() return res_json(errmsg='文章更新成功') else: err_m_l = [] for i in form.errors.values(): err_m_l.append(i[0]) err_msg_str = '/'.join(err_m_l) return res_json(errno=Code.PARAMERR, errmsg=err_msg_str)
def delete(self, request, hotnews_id): hot = HotNews.objects.only('id').filter(id=hotnews_id).first() if hot: hot.is_delete = True hot.save(update_fields=['is_delete']) return res_json(errmsg='热门文章删除成功') else: return res_json(errno=Code.PARAMERR, errmsg="需要删除的热门文章不存在")
def delete(self, request, u_id): user_instance = Users.objects.filter(id=u_id).first() if user_instance: user_instance.groups.clear() # 清除用户组 user_instance.user_permissions.clear() # 清除用户权限 user_instance.is_active = False # 设置为不激活状态 user_instance.save() return res_json(errmsg="用户删除成功") else: return res_json(errno=Code.PARAMERR, errmsg="需要删除的用户不存在")
def delete(self, request, g_id): g = Group.objects.filter(id=g_id).first() if g: g.permissions.clear() g.delete() return res_json(errmsg='组删除成功') else: return http.HttpResponseForbidden()
def delete(self, request, d_id): docs = Doc.objects.filter(id=d_id).first() if docs: docs.is_delete = True docs.save(update_fields=['is_delete']) return res_json(errno=Code.OK, errmsg='文档删除成功') else: return http.HttpResponseForbidden('文档不存在')
def delete(self, request, c_id): course = Course.objects.only('id').filter(is_delete=False).first() if course: course.is_delete = True course.save(update_fields=['is_delete']) return res_json(errno=Code.OK, errmsg='视频删除成功') else: return http.HttpResponseForbidden('视频不存在')
def delete(self, request, b_id): banner = Banner.objects.filter(is_delete=False, id=b_id).first() if banner: banner.is_delete = True banner.save(update_fields=['is_delete']) return res_json(errno=Code.OK, errmsg='轮播图标签删除成功') else: return http.HttpResponseForbidden('轮播图不存在')
def post(self, request): json_data = request.body if not json_data: return res_json(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) dict_data = json.loads(json_data.decode('utf8')) form = CoursesPubForm(data=dict_data) if form.is_valid(): courses_instance = form.save() return res_json(errmsg='课程发布成功') else: # 定义一个错误信息列表 err_msg_list = [] for item in form.errors.get_json_data().values(): err_msg_list.append(item[0].get('message')) err_msg_str = '/'.join(err_msg_list) # 拼接错误信息为一个字符串 return res_json(errno=Code.PARAMERR, errmsg=err_msg_str)
def post(self, request): js_str = request.body if not js_str: return parms_statues tag_data = json.loads(js_str) name = tag_data.get('name') if name: name = name.strip() #去掉两个之间空白 #入库,get_or_create就是一个判断有给你新对 tag = Tag.objects.get_or_create(name=name) return (res_json(errno=Code.OK) if tag[-1] else res_json( errno=Code.DATAEXIST, errmsg='分类名已存在')) #三目云算符 # if tag[-1]: # return res_json(errno=Code.OK) # else: # return res_json(errno=Code.DATAEXIST,errmsg='分类名已存在') else: return res_json(errno=Code.NODATA, errmsg=error_map[Code.NODATA])
def put(self, request, g_id): group = Group.objects.filter(id=g_id).first() if not group: return res_json(errno=Code.NODATA, errmsg='需要更新的用户组不存在') json_data = request.body if not json_data: return res_json(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) # 将json转化为dict dict_data = json.loads(json_data.decode('utf8')) # 取出组名,进行判断 group_name = dict_data.get('name', '').strip() if not group_name: return res_json(errno=Code.PARAMERR, errmsg='组名为空') if group_name != group.name and Group.objects.filter( name=group_name).exists(): return res_json(errno=Code.DATAEXIST, errmsg='组名已存在') # 取出权限 group_permissions = dict_data.get('group_permissions') if not group_permissions: return res_json(errno=Code.PARAMERR, errmsg='权限参数为空') try: permissions_set = set(int(i) for i in group_permissions) except Exception as e: logger.info('传的权限参数异常:\n{}'.format(e)) return res_json(errno=Code.PARAMERR, errmsg='权限参数异常') all_permissions_set = set(i.id for i in Permission.objects.only('id')) if not permissions_set.issubset(all_permissions_set): return res_json(errno=Code.PARAMERR, errmsg='有不存在的权限参数') existed_permissions_set = set(i.id for i in group.permissions.all()) if group_name == group.name and permissions_set == existed_permissions_set: return res_json(errno=Code.DATAEXIST, errmsg='用户组信息未修改') group_permissions.clear() #清除之前的数据 保存之前清除旧的传限 # 设置权限 for perm_id in permissions_set: p = Permission.objects.get(id=perm_id) group.permissions.add(p) group.name = group_name group.save() return res_json(errmsg='组更新成功!')
def put(self, request, tag_id): js_str = request.body if not js_str: return parms_statues dict_data = json.loads(js_str.decode('utf8')) tag_name = dict_data.get('name') #查数据 tag = Tag.objects.only('id').filter(id=tag_id).first() if tag: if tag_name and tag_name.strip(): #消除数据空格问题 if not Tag.objects.only('id').filter(name=tag_name).exists(): tag.name = tag_name tag.save() return res_json(errno=Code.OK) else: return res_json(errno=Code.DATAEXIST, errmsg='分类名已重复') else: return parms_statues else: return parms_statues
def post(self, request): json_data = request.body if not json_data: return res_json(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) # 将json转化为dict dict_data = json.loads(json_data.decode('utf8')) form = DocsPubForm(data=dict_data) if form.is_valid(): docs_instance = form.save(commit=False) docs_instance.author_id = request.user.id docs_instance.save() return res_json(errmsg='文档创建成功') else: # 定义一个错误信息列表 err_msg_list = [] for item in form.errors.get_json_data().values(): err_msg_list.append(item[0].get('message')) err_msg_str = '/'.join(err_msg_list) # 拼接错误信息为一个字符串 return res_json(errno=Code.PARAMERR, errmsg=err_msg_str)
def put(self, request, d_id): docs = Doc.objects.filter(is_delete=False, id=d_id).first() js_str = request.body if not js_str: return res_json(errno=Code.PARAMERR, errmsg='参数错误') js_str = json.loads(js_str) form = DocsPubForm(data=js_str) if form.is_valid(): for k, v in form.cleaned_data.items(): setattr(docs, k, v) #v是值,k是键 docs.save() return res_json(errno=Code.OK, errmsg='文档编辑成功') else: # 定义一个错误信息列表 err_msg_list = [] for item in form.errors.get_json_data().values(): err_msg_list.append(item[0].get('message')) err_msg_str = '/'.join(err_msg_list) # 拼接错误信息为一个字符串 return res_json(errno=Code.PARAMERR, errmsg=err_msg_str)
def post(self, request): json_data = request.body if not json_data: return res_json(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('前端传过来的文章id参数异常:\n{}'.format(e)) return res_json(errno=Code.PARAMERR, errmsg='参数错误') if not News.objects.filter(id=news_id).exists(): return res_json(errno=Code.PARAMERR, errmsg='文章不存在') try: priority = int(dict_data.get('priority')) priority_list = [i for i, _ in HotNews.P_CHOICES] print(priority_list) if priority not in priority_list: return res_json(errno=Code.PARAMERR, errmsg='热门文章的优先级设置错误') except Exception as e: logger.info('热门文章优先级异常:\n{}'.format(e)) return res_json(errno=Code.PARAMERR, errmsg='热门文章的优先级设置错误') # 创建热门新闻 hotnews_tuple = HotNews.objects.get_or_create(news_id=news_id, priority=priority) hotnews, is_created = hotnews_tuple hotnews.priority = priority # 修改优先级 hotnews.save(update_fields=['priority']) return res_json(errmsg="热门文章创建成功")
def get(self, request): banner = models.Banner.objects.select_related('news').only( 'image_url', 'news__title').filter(is_delete=False).order_by('priority') b_info = [] for i in banner: b_info.append({ 'image_url': i.image_url, 'news_title': i.news.title, 'news_id': i.news.id }) data = {'banner': b_info} return res_json(data=data)
def put(self, request, hotnews_id): js_str = request.body if not js_str: return parms_statues dict_data = json.loads(js_str.decode('utf8')) try: priority = int(dict_data.get('priority')) priority_list = [i for i, _ in HotNews.P_CHOICES] except Exception as e: logger.info('热门文章优先级异常:\n{}'.format(e)) return res_json(errno=Code.PARAMERR, errmsg='热门文章的优先级设置错误') hotnews = HotNews.objects.only('id').filter(id=hotnews_id).first() if not hotnews: return res_json(errno=Code.PARAMERR, errmsg="需要更新的热门文章不存在") if hotnews.priority == priority: return res_json(errno=Code.PARAMERR, errmsg="热门文章的优先级未改变") if hotnews.priority == [1, 2, 3]: return res_json(errno=Code.PARAMERR, errmsg="热门文章的优先级只能为1,2,3") hotnews.priority = priority hotnews.save(update_fields=['priority']) return res_json(errmsg="热门文章更新成功")
def post(self, request, news_id): res_error = res_json(errno=Code.PARAMERR, errmsg='参数错误') if not request.user.is_authenticated: #判断用户未登录 return res_json(Code.SESSIONERR, errmsg='用户未登录') #判断用户是否存在 if not models.News.objects.filter(is_delete=False, id=news_id).exists(): return res_error #获取参数 js_data = request.body if not js_data: return res_error dict_data = json.loads(js_data) #一级评论 content = dict_data.get('content') if not dict_data['content']: return res_error #回复评论 parent_id = dict_data.get('parent_id') if parent_id: if not models.Comment.objects.filter( is_delete=False, id=parent_id, news_id=news_id).exists(): return res_error # 保存数据库 news = models.Comment() news.content = content news.news_id = news_id news.author = request.user news.parent_id = parent_id if parent_id else None news.save() return res_json(data=news.to_dict())
def put(self, request, u_id): user_instance = Users.objects.filter(id=u_id).first() if not user_instance: return res_json(errno=Code.NODATA, errmsg='需要更新的用户不存在') json_data = request.body if not json_data: return res_json(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) # 将json转化为dict dict_data = json.loads(json_data.decode('utf8')) # 取出参数,进行判断 try: groups = dict_data.get('groups') # 取出用户组列表 is_staff = int(dict_data.get('is_staff')) is_superuser = int(dict_data.get('is_superuser')) is_active = int(dict_data.get('is_active')) params = [is_staff, is_superuser, is_active] if not all([p in (0, 1) for p in params]): return res_json(errno=Code.PARAMERR, errmsg='参数错误') except Exception as e: logger.info('从前端获取参数出现异常:\n{}'.format(e)) return res_json(errno=Code.PARAMERR, errmsg='参数错误') try: groups_set = set(int(i) for i in groups) if groups else set() except Exception as e: logger.info('传的用户组参数异常:\n{}'.format(e)) return res_json(errno=Code.PARAMERR, errmsg='用户组参数异常') all_groups_set = set(i.id for i in Group.objects.only('id')) if not groups_set.issubset(all_groups_set): return res_json(errno=Code.PARAMERR, errmsg='有不存在的用户组参数') gs = Group.objects.filter(id__in=groups_set) # 先清除组 user_instance.groups.clear() user_instance.groups.set(gs) user_instance.is_staff = bool(is_staff) user_instance.is_superuser = bool(is_superuser) user_instance.is_active = bool(is_active) user_instance.save() return res_json(errmsg='用户信息更新成功!')
def post(self, request): name = request.FILES images = name.get('images_file') if name.get( 'images_file') else name.get('text_file') if not images: return parms_statues if name.get('images_file'): if images.content_type not in ('image/jpeg', 'image/gif', 'image/png', 'image/jpg', 'image/bmp'): return res_json(errno=Code.PARAMERR, errmsg='不要传非图片文件') if images.content_type not in ('application/zip', 'application/zip', 'application/doc', 'application/pdf', 'application/plain', 'application/m3u8', 'application/mp4', 'image/jpeg', 'image/gif', 'image/png', 'image/jpg', 'image/bmp'): return res_json(errno=Code.PARAMERR, errmsg='不要传非文档文件') #上传图片到dfs ext_name = images.name.split('.')[-1] try: upload_img = FDFS_Client.upload_by_buffer( images.read(), file_ext_name=ext_name) # 上传二进制文件 # print(upload_img) except Exception as e: # logger.error('图片上传失败{}'.format(e)) return res_json(errno=Code.UNKOWNERR, errmsg='文件上传失败{}'.format(e)) #结合响应 else: if upload_img.get('Status') != 'Upload successed.': return res_json(errno=Code.UNKOWNERR, errmsg='文件上传失败') else: img_id = upload_img.get('Remote file_id') img_url = prod.FDFS_URL + img_id #拼接地址 print(img_url) if name.get('images_file'): return res_json(data={'image_url': img_url}, errmsg='图片上传成功') else: return res_json(data={'text_url': img_url}, errmsg='文件上传成功')
def put(self, request, b_id): """ 1.获取参数 Image pri id 2.处理id 3.数据清洗 4验证优先级 处理图片 判断是否有修改 去数据库取参数 对比 前台的传参 保存入库 :param request: :param b_id: :return: """ banners = Banner.objects.only('id').filter(is_delete=False, id=b_id).first() if not banners: return res_json(errno=Code.PARAMERR, errmsg='轮播图不存在') json_str = request.body if not json_str: return res_json(errno=Code.PARAMERR, errmsg='获取参数失败') dict_data = json.loads(json_str) # 获取参数 优先级 priority = int(dict_data.get('priority')) # 整形 priority_list = [i for i, _ in Banner.B_CHOICES] # 作用域 if priority not in priority_list: return res_json(errno=Code.PARAMERR, errmsg='优先级不存在') image_url = dict_data['image_url'] if not image_url: return res_json(errno=Code.PARAMERR, errmsg='图片数据为空') # 判断是否已修改 if banners.priority == priority and banners.image_url == image_url: return res_json(errno=Code.PARAMERR, errmsg='数据没有修改') # 保存到数据库 banners.priority = priority # 1 2 3 4 5 6 看他的值 banners.image_url = image_url banners.save(update_fields=['priority', 'image_url']) return res_json(errmsg='轮播图更新成功')
def post(self, request): json_data = request.body if not json_data: return res_json(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) dict_data = json.loads(json_data.decode('utf8')) # 取出组名,进行判断 group_name = dict_data.get('name', '').strip() if not group_name: return res_json(errno=Code.PARAMERR, errmsg='组名为空') one_group, is_created = Group.objects.get_or_create(name=group_name) if not is_created: return res_json(errno=Code.DATAEXIST, errmsg='组名已存在') # 取出权限 group_permissions = dict_data.get('group_permissions') if not group_permissions: return res_json(errno=Code.PARAMERR, errmsg='权限参数为空') try: # [10, 2, 3, 10, 3, 2, 4] permissions_set = set(int(i) for i in group_permissions) except Exception as e: logger.info('传的权限参数异常:\n{}'.format(e)) return res_json(errno=Code.PARAMERR, errmsg='权限参数异常') all_permissions_set = set(i.id for i in Permission.objects.only('id')) if not permissions_set.issubset(all_permissions_set): return res_json(errno=Code.PARAMERR, errmsg='有不存在的权限参数') # 设置权限 for perm_id in permissions_set: p = Permission.objects.get(id=perm_id) one_group.permissions.add(p) one_group.save() return res_json(errmsg='组创建成功!')
def get(self, request): #验证数据 try: tag = int(request.GET.get('tag_id', 0)) #分类 except Exception as e: logger.error('页面分类错误'.format(e)) tag = 0 #默认页面分类为零 try: page = int(request.GET.get('page')) except Exception as e: logger.error('页码错误'.format(e)) page = 1 #默认页码为1 #数据库里面拿数据 annotate 方法在底层调用了数据库的数据聚合函数 # news_list=News.objects.values('title','digest','image_url','update_time','id').annotate(tag_name=F('tag__name'),author=F('author__username')) news_list = News.objects.select_related('tag', 'author').only( 'title', 'digest', 'image_url', 'update_time', 'author__username', 'tag__name').filter(is_delete=False) news_info = news_list.filter( is_delete=False, tag_id=tag) or news_list.filter(is_delete=False) #分页 pages = Paginator(news_info, 5) #展示第五页 try: news = pages.page(page) #拿到当前返回页 except Exception as e: logger.error(e) news = pages.page(pages.num_pages) #获取页面总数 news_list_info = [] for i in news: news_list_info.append(i.to_put(), ) data = { 'news': news_list_info, 'total_pages': pages.num_pages, } return res_json(data=data)
def post(self, request): json_str = request.body # news_id priority image_url if not json_str: return res_json(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) dict_data = json.loads(json_str) # 校验参数 news_id = int(dict_data.get('news_id')) if not News.objects.filter(id=news_id).exists(): return res_json(errno=Code.PARAMERR, errmsg='新闻不存在') try: priority = int(dict_data.get('priority')) priority_list = [i for i, _ in Banner.B_CHOICES] # 作用域 if priority not in priority_list: return res_json(errno=Code.PARAMERR, errmsg='轮播图优先级错误') except Exception as e: logger.info('轮播图优先级异常{}'.format(e)) return res_json(errno=Code.PARAMERR, errmsg='轮播图优先级错误') image_url = dict_data.get('image_url') if not image_url: return res_json(errno=Code.PARAMERR, errmsg='轮播图优先级为空') # 创建轮播图 obj true # 创建实例 保存到数据库 banner = Banner.objects.get_or_create(news_id=news_id, priority=priority) banners, is_cre = banner banners.priority = priority banners.image_url = image_url banners.save(update_fields=['priority', 'image_url']) return res_json(errmsg='轮播图创建成功')
from xm.utils.res_code import Code, res_json, error_map import json from xm.utils.fiP.ip import blacks, func from datetime import datetime import logging logger = logging.getLogger('django') from .paginator import get_page_data from urllib.parse import urlencode from users.models import Users from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.decorators import login_required, permission_required from django.utils.decorators import method_decorator from xm.settings import prod # Create your views here. parms_statues = res_json(errno=Code.PARAMERR, errmsg='参数错误') # @blacks # @func #权限1 class LoginRequiredMixin(object): @method_decorator(login_required(login_url='/user/login/')) def dispatch(self, request, *args, **kwargs): return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs) class admin(LoginRequiredMixin, View): #继承一定要在前面 def get(self, request): return render(request, 'admin/news/index.html')
def handle_no_permission(self): if self.request.method.lower() != 'get': return res_json(errno=Code.PARAMERR, errmsg='没有权限') else: return super().handle_no_permission()
def get(self, request, t_id): new = News.objects.values('id', 'title').filter(is_delete=False, tag_id=t_id) new_list = [i for i in new] return res_json(data={'news': new_list})
def handle_no_permission(self): if self.request.method.lower() != 'get': return res_json(errno=Code.ROLEERR, errmsg='没有操作权限') else: return super(Group_edit, self).handle_no_permission()