def post(self, request): # 1.从前端获取参数 json_data = request.body if not json_data: return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) # 2.将json转化为dict dict_data = json.loads(json_data.decode('utf8')) form = forms.NewsPubForm(data=dict_data) if form.is_valid(): # 3.保存到数据库 # 只有form继承了forms.ModelForm 才能使用这种方法 news_instance = form.save(commit=False) news_instance.author_id = request.user.id # news_instance.author_id = 1 # for test news_instance.save() # 4. 返回给前端 return to_json_data(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 to_json_data(errno=Code.PARAMERR, errmsg=err_msg_str)
def post(self, request): image_file = request.FILES.get('image_file') if not image_file: logger.info('从前端获取图片失败') return to_json_data(errno=Code.NODATA, errmsg='从前端获取图片失败') if image_file.content_type not in ('image/jpeg', 'image/png', 'image/gif'): return to_json_data(errno=Code.DATAERR, errmsg='不能上传非图片文件') try: image_ext_name = image_file.name.split('.')[-1] except Exception as e: logger.info('图片拓展名异常:{}'.format(e)) image_ext_name = 'jpg' try: upload_res = FDFS_Client.upload_by_buffer( image_file.read(), file_ext_name=image_ext_name) except Exception as e: logger.error('图片上传出现异常:{}'.format(e)) return to_json_data(errno=Code.UNKOWNERR, errmsg='图片上传异常') else: if upload_res.get('Status') != 'Upload successed.': logger.info('图片上传到FastDFS服务器失败') return to_json_data(Code.UNKOWNERR, errmsg='图片上传到服务器失败') else: image_name = upload_res.get('Remote file_id') image_url = settings.FASTDFS_SERVER_DOMAIN + image_name return to_json_data(data={'image_url': image_url}, errmsg='图片上传成功')
def post(self, request): """ :param request: 返回json_dict到前端 :return: JsonResponse(json_dict) """ json_data = request.body if not json_data: return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) dict_data = json.loads(json_data.decode('utf8')) # 修改 tag_name = dict_data.get('name') if tag_name: tag_name = tag_name.strip() tag_tuple = models.Tag.objects.get_or_create(name=tag_name) tag_instance, tag_boolean = tag_tuple if tag_boolean: news_tag_dict = { 'id': tag_instance.id, 'name': tag_instance.name } return to_json_data(errmsg='标签创建成功', data=news_tag_dict) else: return to_json_data(errno=Code.DATAEXIST, errmsg='标签已存在') else: return to_json_data(errno=Code.PARAMERR, errmsg='标签不能为空')
def put(self, request, news_id): """ :param request: :param news_id: :return: """ news = models.News.objects.filter(id=news_id).first() # 验证参数 if not news: return to_json_data(errno=Code.PARAMERR, errmsg="文章不存在") json_data = request.body if not json_data: return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) dict_data = json.loads(json_data.decode('utf8')) form = forms.NewsPubForm(data=dict_data) if form.is_valid(): news.title = form.cleaned_data.get('title') news.digest = form.cleaned_data.get('digest') news.content = form.cleaned_data.get('content') news.image_url = form.cleaned_data.get('image_url') news.tag = form.cleaned_data.get('tag') news.save() return to_json_data(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 to_json_data(errno=Code.PARAMERR, errmsg=err_msg_str)
def post(self, request): text_file = request.FILES.get('text_file') if not text_file: logger.info('从前端获取文件失败!') return to_json_data(errno=Code.NODATA, errmsg='从前端获取文件失败') if text_file.content_type not in ('application/octet-stream', 'application/pdf', 'application/zip', 'text/plain', 'application/x-rar'): return to_json_data(errno=Code.DATAERR, errmsg='不能上传非正常文件') try: text_ext_name = text_file.name.split('.')[-1] except Exception as e: logger.info('文件拓展名异常:{}'.format(e)) text_ext_name = 'pdf' try: upload_res = FDFS_Client.upload_by_buffer( text_file.read(), file_ext_name=text_ext_name) except Exception as e: logger.error('文件上传出现异常:{}'.format(e)) return to_json_data(errno=Code.UNKOWNERR, errmsg='文件上传异常') else: if upload_res.get('Status') != 'Upload successed.': logger.info('文件上传到FastDFS服务器失败') return to_json_data(Code.UNKOWNERR, errmsg='文件上传到服务器失败') else: text_name = upload_res.get('Remote file_id') text_url = settings.FASTDFS_SERVER_DOMAIN + text_name return to_json_data(data={'text_file': text_url}, errmsg='文件上传成功')
def put(self, request, tag_id): """ :param request: request.body :param tag_id: :return: 前端传入和数据库对比验证 """ json_data = request.body # 校验前端传入是否正确 if not json_data: return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) dict_data = json.loads(json_data.decode('utf8')) tag_name = dict_data.get('name').strip() # 比对数据库 tag = models.Tag.objects.only('name').filter(id=tag_id).first() if tag: if not models.Tag.objects.only('id').filter( name=tag_name).exists(): if tag.name == tag_name: return to_json_data(errno=Code.PARAMERR, errmsg='标签未修改') tag.name = tag_name tag.save(update_fields=['name']) return to_json_data(errmsg='标签更新成功') else: return to_json_data(errmsg='标签名已存在') else: return to_json_data(errno=Code.PARAMERR, errmsg='标签不存在')
def delete(self, request, banner_id): banner = models.Banner.objects.only('id').filter(id=banner_id).first() if banner: banner.is_delete = True banner.save(update_fields=['is_delete', 'update_time']) return to_json_data(errmsg='轮播图删除成功') else: return to_json_data(errno=Code.PARAMERR, errmsg='轮播图不存在')
def delete(self, request, doc_id): # 获取参数并验证 doc = Doc.objects.only('id').filter(id=doc_id, is_delete=False).first() if doc: doc.is_delete = True # 更新参数 doc.save(update_fields=['is_delete', 'update_time']) return to_json_data(errmsg='轮播图删除成功') else: return to_json_data(errno=Code.PARAMERR, errmsg='轮播图不存在')
def delete(self, request, news_id): """ 删除文章 """ news = models.News.objects.only('id').filter(id=news_id).first() if news: news.is_delete = True # 更新参数 news.save(update_fields=['is_delete', 'update_time']) return to_json_data(errmsg='文章删除成功') else: return to_json_data(errno=Code.PARAMERR, errmsg='文章不存在')
def delete(self, request, tag_id): """ :param request: :param tag_id: 前端传入和数据库对比验证 :return: JsonResponse(json_dict) """ tag = models.Tag.objects.only('id').filter(id=tag_id).first() if tag: tag.is_delete = True tag.save(update_fields=['is_delete']) return to_json_data(errmsg='标签删除成功') else: return to_json_data(errno=Code.PARAMERR, errmsg='标签不存在')
def delete(self, request, hotnews_id): """ :param request: :param hotnews_id: :return: 前端传入和数据库对比验证 """ # 获取参数并验证 tag = models.Tag.objects.only('id').filter(id=hotnews_id).first() if tag: tag.is_delete = True # 更新参数 tag.save(update_fields=['is_delete', 'update_time']) return to_json_data(errmsg='标签删除成功') else: return to_json_data(errno=Code.PARAMERR, errmsg='标签不存在')
def delete(self, request, course_id): """""" courses = Course.objects.only('id').filter(is_delete=False, id=course_id).first() if courses: courses.is_delete = True courses.save(update_field=['is_delete', 'update_time']) return to_json_data(errmsg="在线课堂删除成功")
def post(self, request): json_data = request.body if not json_data: return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) # 2.将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('热门文章:\n{}'.format(e)) return to_json_data(errno=Code.PARAMERR, errmsg='参数错误') if not models.News.objects.filter(id=news_id).exists(): return to_json_data(errno=Code.PARAMERR, errmsg='文章不存在') try: priority = int(dict_data.get('priority')) priority_list = [i for i, _ in models.HotNews.PRI_CHOICES] 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='参数错误') try: image_url = dict_data.get('image_url') except Exception as e: logger.info('图片url:\n{}'.format(e)) return to_json_data(errno=Code.PARAMERR, errmsg='图片上传错误') banner_tuple = models.Banner.objects.get_or_create(news_id=news_id) banner, is_created = banner_tuple banner.priority = priority banner.image_url = image_url banner.save() return to_json_data(errmsg='轮播图修改成功')
def post(self, request): json_data = request.body if not json_data: return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) dict_data = json.loads(json_data.decode('utf8')) form = forms.CoursesPubForm(data=dict_data) if form.is_valid(): courses_instance = form.save() return to_json_data(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 to_json_data(errno=Code.PARAMERR, errmsg=err_msg_str)
def get(self, request, course_id): """""" course = Course.objects.filter(is_delete=False, id=course_id).first() teachers = Teacher.objects.all() categories = CourseCategory.objects.only('name').filter( is_delete=False) if not course: return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) return render(request, 'admin/course/courses_pub.html', locals())
def get(self, request): # 1获取参数 # 2校验参数 try: tag_id = int(request.GET.get('tag_id', 0)) except Exception as e: logger.error('标签错误:\n{}'.format(e)) tag_id = 0 try: page = int(request.GET.get('page', 1)) except Exception as e: logger.error('页面错误:\n{}'.format(e)) page = 1 # 3数据库获取数据 # title、digest、image_url、update_time # select_related news_queryset = models.News.objects.select_related( 'tag', 'author').only('title', 'digest', 'image_url', 'update_time', 'tag__name', 'author__username') news = news_queryset.filter( is_delete=False, tag_id=tag_id) or news_queryset.filter(is_delete=False) # 4分页 paginator = Paginator(news, constants.PER_PAGE_NEWS_COUNT) try: news_info = paginator.page(page) except Exception: logger.error('访问页面失败') news_info = paginator.page(paginator.num_pages) # 5序列化输出 news_info_list = [] for n in news_info: news_info_list.append({ 'id': n.id, 'title': n.title, 'digest': n.digest, 'image_url': n.image_url, 'update_time': n.update_time.strftime('%Y年%m月%d日 %H:%M'), 'tag_name': n.tag.name, 'author': n.author.username }) data = {'news': news_info_list, 'total_pages': paginator.num_pages} # 6返回数据到前端 return to_json_data(data=data)
def get(self, request, news_id): """ :param request: :param news_id: :return: """ news = models.News.objects.filter(is_delete=False, id=news_id).first() if not news: return to_json_data(errno=Code.PARAMERR, errmsg="文章不存在") tags = models.Tag.objects.only('id', 'name').filter(is_delete=False) return render(request, 'admin/news/news_pub.html', locals())
def put(self, request, hotnews_id): json_data = request.body # 验证参数 if not json_data: return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) dict_data = json.loads(json_data.decode('utf8')) try: priority = int(dict_data.get('priority')) priority_list = [i for i, _ in models.HotNews.PRI_CHOICES] 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='热门文章优先级设置错误') hotnews = models.HotNews.objects.only('id').filter( id=hotnews_id).first() if not hotnews: return to_json_data(errno=Code.PARAMERR, errmsg='需要更新的热门文章不存在') if hotnews.priority == priority: return to_json_data(errno=Code.PARAMERR, errmsg='热门文章优先级优先级无变化') hotnews.priority = priority hotnews.save(update_fields=['priority', 'update_time']) return to_json_data(errmsg='热门文章更新成功')
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]) dict_data = json.loads(json_data.decode('utf8')) try: news_id = int(dict_data.get('news_id')) except Exception as e: logger.info('热门文章:\n{}'.format(e)) return to_json_data(errno=Code.PARAMERR, errmsg='参数错误') if not models.News.objects.filter(id=news_id).exists(): return to_json_data(errno=Code.PARAMERR, errmsg='文章不存在') try: priority = int(dict_data.get('priority')) priority_list = [i for i, _ in models.HotNews.PRI_CHOICES] 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='参数错误') hotnews_tuple = models.HotNews.objects.get_or_create(news_id=news_id) hotnews, is_created = hotnews_tuple hotnews.priority = priority hotnews.save(update_fields=['priority']) return to_json_data(errmsg='热门新闻修改成功')
def put(self, request, course_id): """""" json_data = request.body if not json_data: return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) dict_data = json.loads(json_data.decode("utf8")) course = Course.objects.filter(id=course_id, is_delete=False).first() form = forms.CoursesPubForm(data=dict_data) if form.is_valid(): for attr, value in form.cleaned_data.items(): setattr(course, attr, value) course.save() return to_json_data(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 to_json_data(errno=Code.PARAMERR, errmsg=err_msg_str)
def put(self, request, doc_id): json_data = request.body if not json_data: return to_json_data(errno=Code.PARAMERR, errmsg='参数不存在') dict_data = json.loads(json_data.decode('utf8')) doc = Doc.objects.filter(id=doc_id, is_delete=False).first() form = forms.DocsPubForm(data=dict_data) if form.is_valid(): doc.title = form.cleaned_data.get('title') doc.desc = form.cleaned_data.get('desc') doc.file_url = form.cleaned_data.get('file_url') doc.image_url = form.cleaned_data.get('image_url') doc.save() return to_json_data(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 to_json_data(errno=Code.PARAMERR, errmsg=err_msg_str)
def get(self, request): banners = models.Banner.objects.select_related('news').only( 'image_url', 'news_id', 'news__title').filter(is_delete=False).order_by( 'priority', '-news__clicks')[:constants.SHOW_BANNER_COUNT] # 序列化输出 banners_info_list = [] for b in banners: banners_info_list.append({ 'image_url': b.image_url, 'news_id': b.news_id, 'news_title': b.news.title }) data = {'banners': banners_info_list} return to_json_data(data=data)
def post(self, request, news_id): # 1获取参数 # 是否登录 if not request.user.is_authenticated: return to_json_data(errno=Code.SESSIONERR, errmsg=error_map[Code.SESSIONERR]) if not models.News.objects.only('id').filter(is_delete=False, id=news_id).exists(): return to_json_data(errno=Code.PARAMERR, errmsg='新闻不存在') json_data = request.body # 2校验参数 if not json_data: return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) dict_data = json.loads(json_data.decode('utf8')) content = dict_data.get('content') if not content: return to_json_data(errno=Code.PARAMERR, errmsg='评论内容不能为空') # 提取父评论 parent_id = dict_data.get('parent_id') # 验证父评论 try: if parent_id: parent_id = int(parent_id) if not models.Comments.objects.only('id').filter( is_delete=False, id=parent_id, news_id=news_id).exists(): return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) except Exception as e: logger.info('parent_id有误:{}'.format(e)) return to_json_data(errno=Code.PARAMERR, errmsg='parent_id异常') # 3存入数据 news_comment = models.Comments() news_comment.content = content news_comment.news_id = news_id news_comment.author = request.user news_comment.parent_id = parent_id if parent_id else None news_comment.save() # 4返回前端 return to_json_data(data=news_comment.to_dict_data())
def put(self, request, banner_id): json_data = request.body if not json_data: return to_json_data(errno=Code.PARAMERR, errmsg='参数不存在') dict_data = json.loads(json_data.decode('utf8')) try: priority = int(dict_data.get('priority')) priority_list = [i for i, _ in models.Banner.PRI_CHOICES] 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='热门文章优先级设置错误') banner = models.Banner.objects.only('id').filter(id=banner_id).first() if not banner: return to_json_data(errno=Code.PARAMERR, errmsg='需要更新的轮播图不存在') if banner.priority == priority: return to_json_data(errno=Code.PARAMERR, errmsg='轮播图优先级优先级无变化') banner.priority = priority banner.save(update_fields=['priority', 'update_time']) return to_json_data(errmsg='轮播图更新成功')
def get(self, request, doc_id): doc = Doc.objects.only('id').filter(id=doc_id).first() if not doc: return to_json_data(errno=Code.PARAMERR, errmsg="文档不存在") tags = models.Tag.objects.only('id', 'name').filter(is_delete=False) return render(request, 'admin/doc/docs_pub.html', locals())
def get(self, request, tag_id): news = models.News.objects.filter(is_delete=False, tag_id=tag_id).values('id', 'title') news_list = [i for i in news] return to_json_data(data={'news': news_list})