def post(self, request): form = forms.PubNewsForm(request.POST) if form.is_valid(): title = form.cleaned_data.get('title') desc = form.cleaned_data.get('desc') thumbnail_url = form.cleaned_data.get('thumbnail_url') content = form.cleaned_data.get("content") tag_id = form.cleaned_data.get('tag_id') newstag = NewsTag.objects.filter(id=tag_id).all() if newstag: new = NewsPub(title=title, desc=desc, thumbnail=thumbnail_url, content=content, tag=newstag[0], auth=request.user) new.save() # print(newstag) return json_status.result(message='发布成功!') else: return json_status.params_error(message='新闻标签不存在!') else: return json_status.params_error(message=self.get_error(form))
def put(self, request): """ # 接收前端 put 请求的值 post # request.PUI 没有 # request.POST # <QueryDict: {'tag_name': ['技']}> # 所有的参数 全部是存在body POST/GET b'tag_name=%E6%8A%80' # 我是采用id来判断 # 在前端向后台提供了只有两个tag_id(标签id) tag_name (标签name) :param request: :return: """ res = QueryDict(request.body) tag_name = res.get("tag_name", None) tag_id = res.get("tag_id", None) if tag_id and tag_name: tag = NewsTag.objects.filter(id=tag_id) if tag: news_tag_exists = NewsTag.objects.filter( name=tag_name).exists() if news_tag_exists: return json_status.params_error(message="该标签已经存在,请不要重复输入") tag.update(name=tag_name) return json_status.result() return json_status.params_error(message="标签不存在") return json_status.params_error(message="标签不存在")
def post(self, request): # if request.user.is_authenticated: form = AddNewsCommentFrom(request.POST) if form.is_valid(): news_id = form.cleaned_data.get('news_id') content = form.cleaned_data.get('content') # print(news_id, content) news = News.objects.filter(id=news_id).first() if news: # request.user 匿名用户 必须要登录才能访问这个视图 ajax 方式 comment = NewsComment.objects.create(content=content, author=request.user, news=news) # create 会返回一个对象 # [Query Set NewsComment object (8), NewsComment object (7),NewsComment object (6)] print(comment) print(type(comment)) # 序列化 不需要加 many=True serializer = NewsCommentSerializer(comment) print('=======') # {'content': '123213123123123321', 'create_time': '2018-10-22T21:43:15.601645+08:00', 'author': OrderedDict([('id', 1), ('username', 'Admin')])} print(serializer.data) print('=======') return json_status.result(data=serializer.data) return json_status.params_error(message="新闻不存在") return json_status.params_error(message=form.get_error())
def post(self, request): """ 更新新闻 """ form = forms.NewsEditForm(request.POST) if form.is_valid(): news_id = form.cleaned_data.get('news_id') print(news_id) title = form.cleaned_data.get('title') desc = form.cleaned_data.get('desc') thumbnail_url = form.cleaned_data.get('thumbnail_url') content = form.cleaned_data.get("content") tag_id = form.cleaned_data.get('tag_id') newstag = NewsTag.objects.filter(id=tag_id).first() #查询新闻所属的新闻类 if newstag: new = NewsPub.objects.filter(id=news_id) print(new[0].id) new.update(id=news_id, title=title, desc=desc, thumbnail=thumbnail_url, auth=request.user, content=content, tag=newstag) # print(newstag) return json_status.result(message='更新成功!') else: return json_status.params_error(message='新闻标签不存在!') else: return json_status.params_error(message=self.get_error(form))
def post(self, request): # 验证数据 form request.POST传进去 form = NewsPubForm(request.POST) # cleaned_data 写在验证前面 是获取不到值 if form.is_valid(): # title 经过Form验证 如果说没通用验证 # title1 = request.POST.get("title") title = form.cleaned_data.get('title') desc = form.cleaned_data.get('desc') tag_id = form.cleaned_data.get('tag_id') thumbnail_url = form.cleaned_data.get('thumbnail_url') content = form.cleaned_data.get('content') # 去查出来 tag tag = NewsTag.objects.filter(id=tag_id).first() # print(title) # print(desc) # print(tag) # print(thumbnail_url) # print(content) # 当前用户 request.user user.xxx if tag: News.objects.create(title=title, desc=desc, tag=tag, thumbnail_url=thumbnail_url, content=content, author=request.user) return json_status.result() return json_status.params_error(message="标签不存在") # form 没有这个 get_error print(form.errors) return json_status.params_error(message=form.get_error())
def delete(self, request): d = QueryDict(request.body) banner_id = d.get("banner_id") if banner_id: banner = NewsBanner.objects.filter(id=banner_id) if banner: banner.update(is_delete=True) return json_status.result() return json_status.params_error(message="轮播图不存在") return json_status.params_error(message="轮播图id不存在")
def post(self, request): name = request.POST.get('name') if name and bool(name.strip()): # exists() 是否存在 news_tag_exists = NewsTag.objects.filter(name=name).exists() if news_tag_exists: return json_status.params_error(message='该标签已存在,请不要重复输入') NewsTag.objects.create(name=name) return json_status.result(message='成功') return json_status.params_error(message='标签名不能为空')
def put(self, request): ret = QueryDict(request.body) priority = int(ret.get('priority', 0)) if priority: hot_news_id = int(ret.get('hot_news_id', 0)) hot_news = NewsHot.objects.filter(id=hot_news_id) if hot_news: hot_news.update(priority=priority) return json_status.result() return json_status.params_error(message='热门新闻不存在') return json_status.params_error(message='优先级错误')
def get(self, request): news_id = request.GET.get('news_id') if news_id: news = News.objects.filter(id=news_id).first() if news: news_tags = NewsTag.objects.filter(is_delete=True).all() context = {'news': news, 'news_tags': news_tags} return render(request, 'admin/news/news_pub.html', context=context) return json_status.params_error(message='新闻找不到') return json_status.params_error(message='新闻id错误')
def post(self, request): form = AddNewsCommentForm(request.POST) if form.is_valid(): news_id = form.cleaned_data.get('news_id') content = form.cleaned_data.get('content') news = News.objects.filter(id=news_id).first() if news: comment = NewsComment.objects.create(content=content, author=request.user, news=news) serializer = NewsCommentSerializers(comment) return json_status.result(data=serializer.data) # print(news_id, content) return json_status.params_error(message='新闻不存在') return json_status.params_error(message=form.get_error())
def post(self, request): # 取值 name 已经在表存在了 再次输入 提示已经存在 name = request.POST.get("name") # print(name) python 怎么去字符串空格 给空格会被过滤掉 后台的最后一道验证 if name and bool(name.strip()): # exists 是否存 True / False 平时都是一些逻辑 news_tag_exists = NewsTag.objects.filter(name=name).exists() if news_tag_exists: return json_status.params_error(message="该标签已经存在,请不要重复输入") # 创建数据 成功的标准(怎么样确保成功) NewsTag.objects.create(name=name) return json_status.result(message="成功") return json_status.params_error(message="标签名不能为空")
def post(self, request): form = NewsHotAddForm(request.POST) if form.is_valid(): news_id = form.cleaned_data.get('news_id') priority = form.cleaned_data.get('priority') news = News.objects.filter(id=news_id).first() if news: hot_news = NewsHot.objects.filter(news=news).exists() if hot_news: return json_status.params_error(message='该新闻已经是热门新闻') NewsHot.objects.create(priority=priority, news=news) return json_status.result() return json_status.params_error(message='新闻不存在') return json_status.params_error(message=form.get_error())
def delete(self, request): from django.http import QueryDict res = QueryDict(request.body) news_id = res.get('news_id') if news_id: news = News.objects.filter(id=news_id).first() if news: hot_news = NewsHot.objects.filter(news=news) if hot_news: hot_news.update(is_delete=True) news.is_delete = True news.save() return json_status.result() return json_status.params_error(message="新闻不存在") return json_status.params_error(message="参数错误")
def put(self, request): res = QueryDict(request.body) tag_name = res.get('tag_name', None) tag_id = res.get('tag_id', None) if tag_id and tag_name: tag = NewsTag.objects.filter(id=tag_id) if tag: news_tag_exists = NewsTag.objects.filter( name=tag_name).exists() if news_tag_exists: return json_status.params_error(message='该标签已存在,请不要重复输入') tag.update(name=tag_name) return json_status.result() return json_status.params_error(message='标签不存在') return json_status.params_error(message='标签不存在')
def edit_news_tag(request): # post request.POST.get("tag_id) # post request.POST.get("tag_name) tag_name = request.POST.get("tag_name", None) tag_id = request.POST.get("tag_id", None) if tag_id and tag_name: tag = NewsTag.objects.filter(id=tag_id) if tag: news_tag_exists = NewsTag.objects.filter(name=tag_name).exists() if news_tag_exists: return json_status.params_error(message="该标签已经存在,请不要重复输入") tag.update(name=tag_name) return json_status.result() return json_status.params_error(message="标签不存在") return json_status.params_error(message="标签不存在")
def download_doc(request): # 获取前端传过来的id doc_id = request.GET.get("doc_id") # 根据id 查出来文档 doc = Doc.objects.filter(id=doc_id).first() if doc: # http://192.168.31.200:8000/media/avatar.jpeg file_path = doc.file_path # requests 返回文件对象 HttpResponse JsonResponse res = FileResponse(requests.get(file_path)) # 切出文件后缀 file_type = file_path.split('.')[-1] # 设置文件类型 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type # 上传的时候已经限制了格式 只能上传什么格式 if file_type == 'jpg': # http 设置响应头 res["Content-type"] = "image/jpeg" elif file_type == 'doc': res["Content-type"] = "application/msword" elif file_type == 'txt': res["Content-type"] = "text/plain" else: res["Content-type"] = "application/vnd.openxmlformats-officedocument.wordprocessingml.document" # 设置附件下载格式 http://192.168.31.200:8000/media/avatar.jpeg(显示图片) res["Content-Disposition"] = "attachment; filename={}".format( file_path.split('/')[-1]) # 返回一个文件对象 文件响应对象 return res return json_status.params_error(message="文档不存在")
def post(self, request): form = CoursePubForm(request.POST) if form.is_valid(): title = form.cleaned_data.get("title") video_url = form.cleaned_data.get("video_url") cover_url = form.cleaned_data.get("cover_url") teacher_id = form.cleaned_data.get("teacher_id") # name=teacher_name teacher = Teacher.objects.filter(id=teacher_id).first() duration = form.cleaned_data.get('duration') profile = form.cleaned_data.get("profile") outline = form.cleaned_data.get("outline") category_id = form.cleaned_data.get('category_id') # category 分类 category = CourseCategory.objects.filter(id=category_id).first() course = Course.objects.create(title=title, video_url=video_url, cover_url=cover_url, teacher=teacher, duration=duration, profile=profile, outline=outline, category=category) return json_status.result(data={"course_id": course.id}) print(form.errors) return json_status.params_error(message=form.get_error())
def comment_list_with_news(request): # 100条 不可能说全部返回 根据新闻id 返回对应的评论 news_id = request.GET.get("news_id") news = News.objects.filter(id=news_id).first() if news: # 获取当前新闻下的所有 news_comments 是什么类型 QuerySet news_comments = news.comments.all() # <QuerySet [<NewsComment: NewsComment object (1)>, <NewsComment: NewsComment object (2)>]> # {"id": 1,} [{}, {}, {}] # print(news_comments) # <QuerySet [{'id': 1, 'content': '这是新闻id为3的 第一条评论', 'create_time': datetime.datetime(2018, 10, 22, 12, 57, 48, 745035, tzinfo=<UTC>), 'author_id': 1, 'news_id': 3}, {'id': 2, 'content': 'news_id=3 第二条评论', 'create_time': datetime.datetime(2018, 10, 22, 12, 59, 17, 857235, tzinfo=<UTC>), 'author_id': 1, 'news_id': 3}]> # [{id:1}, {id:2}] # .values() 确实可以序列化 一般适合单表 # {'id': 1, 'content': '这是新闻id为3的 第一条评论', 'create_time': datetime.datetime(2018, 10, 22, 12, 57, 48, 745035, tzinfo=<UTC>), 'author_id': {id:1, username:"******"}, 'news_id': 3} 返回合适的json数据 # comments = list(news_comments.values()) # QuerySet # for comment in comments: # # author_id = comment["author_id"] # # User.objects.filter(id=author_id) # 全部查出来 但是返回的全部字段 # print(comment) # 两个及以上 必须加参数 many=True xxx 没有属性 filter many=True / get()/ first()/create() serializer = NewsCommentSerializer(news_comments, many=True) print(serializer) print(type(serializer)) print(dir(serializer)) return json_status.result(data=serializer.data) return json_status.params_error(message="新闻找不到")
def delete(self, request): ret = QueryDict(request.body) hot_news_id = int(ret.get('hot_news_id', 0)) hot_news = NewsHot.objects.filter(id=hot_news_id) if hot_news: hot_news.update(is_detele=False) return json_status.result() return json_status.params_error(message='热门新闻不存在')
def delete(self, request): res = QueryDict(request.body) tag_id = res.get('tag_id', None) tag = NewsTag.objects.filter(id=tag_id) if tag_id and tag: tag.update(is_delete=False) return json_status.result() return json_status.params_error(message='标签不存在')
def comment_list_with_news(request): news_id = request.GET.get('news_id') news = News.objects.filter(id=news_id).first() if news: news_comments = news.comments.all() serializer = NewsCommentSerializers(news_comments, many=True) return json_status.result(data=serializer.data) return json_status.params_error(message='新闻找不到')
def news_hot_list(request): """ 热点新闻列表 """ hot_news = NewsHotAddModle.objects.all() if hot_news: serailizer = NewsHotSerailizer(hot_news,many=True) return json_status.result(data=serailizer.data) return json_status.params_error(message='没有设置优先级的新闻!')
def post(self, request): """ 添加新闻标签 :param request: :return: """ tagVal = request.POST.get('name', None) if tagVal: news = NewsTag.objects.filter( name=tagVal).exists() #如果存在返回True,否则False if not news: NewsTag.objects.create(name=tagVal) return json_status.result(message='添加成功!') else: return json_status.params_error(message='标签名已存在,请不要重复输入!') else: return json_status.params_error(message='值不能为空!')
def delete(self, request): tagid_dict = QueryDict(request.body) tagid = tagid_dict.get('tag_id') news = NewsTag.objects.filter(id=tagid) if tagid and news: news.update(is_delete=False) return json_status.result(message="删除成功!") return json_status.params_error(message='删除失败!请联系管理员。')
def news_with_tag(request): tag_id = int(request.GET.get('tag_id', 0)) if tag_id: newses = News.objects.filter(tag=tag_id, is_delete=True).all() if not tag_id: return json_status.params_error(message='该分类下无新闻') else: newses = News.objects.filter(is_delete=True).all() serialzier = NewsSerializer(newses, many=True) return json_status.result(data={'newses':serialzier.data})
def delete(self, request): """ 删除新闻 :param request: :return: """ res = QueryDict(request.body) news_id = res.get('news_id') if news_id: news = NewsPub.objects.filter(id=news_id).first() if news: hot_news = NewsHotAddModle.objects.filter(news=news) if hot_news: hot_news.update(is_delete=False) news.is_delete = False news.save() return json_status.result() return json_status.params_error(message="新闻不存在") return json_status.params_error(message="参数错误")
def delete(self, request): res = QueryDict(request.body) # 前端只传了 tag_id (tagId 错误的) tag_id = res.get("tag_id", None) tag = NewsTag.objects.filter(id=tag_id) # 防止有的人 绕过浏览器 if tag_id and tag: tag.update(is_delete=True) return json_status.result() return json_status.params_error(message="标签不存在")
def post(self, request): # 获取手机号 telephone = request.POST.get("telephone") # 得到用户 查出用户 user = User.objects.filter(telephone=telephone).first() if user: # 获取(权限)列表组 [1,2 ] groups_ids = request.POST.getlist('groups') if groups_ids: # 过滤选中的组 id__in 这个在不在 [1, 2] group = Group.objects.filter(id__in=groups_ids) # 设置组 user.groups.set(group) # 设置为员工 user.is_staff = True user.save() return json_status.result() return json_status.params_error('至少选一个分组') return json_status.params_error('该用户不存在,请先注册后再添加')
def post(self, request): form = NewsPubForm(request.POST) if form.is_valid(): title = form.cleaned_data.get('title') desc = form.cleaned_data.get('desc') tag_id = form.cleaned_data.get('tag_id') thumbnail_url = form.cleaned_data.get('thumbnail_url') content = form.cleaned_data.get('content') tag = NewsTag.objects.get(id=tag_id) if tag: News.objects.create(title=title, desc=desc, tag=tag, thumbnail_url=thumbnail_url, content=content, author=request.user) return json_status.result() return json_status.params_error(message='标签不存在') print(form.errors) return json_status.params_error(message=form.get_error())
def get(self,request): news_id = request.GET.get('news_id') news = NewsPub.objects.filter(id = news_id,is_delete=True).first() if news: new_contents = news.newsconten_set.all() #通过新闻反向查询评论 print(type(new_contents)) contents =NewsContentSerailizer(new_contents,many=True) #序列化结果 return json_status.result(data=contents.data) else: return json_status.params_error(message='没有这条新闻!')