def pic_info(): user = g.user if not user: return redirect(url_for('index.index')) if request.method == 'GET': context = {'user': user.to_dict()} return render_template('news/user_pic_info.html', context=context) if request.method == 'POST': # 获取参数(图片) avatar_file = request.files.get('avatar') # 校验参数 try: avatar_data = avatar_file.read() except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg="读取头像数据失败") # 调用上传方法,将图片上传到七牛 try: key = upload_file(avatar_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg="头像上传失败") #保存用户头像的key到数据库 user.avatar_url = key try: db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg="保存失败") data = {'avatar_url': constants.QINIU_DOMIN_PREFIX + key} #响应头像上传的结果 return jsonify(errno=response_code.RET.OK, errmsg='上传头像成功', data=data)
def pic_info(): user = g.user if not user: return redirect(url_for('index.index')) if request.method == 'GET': context = {'user': user.to_dict()} return render_template('news/user_pic_info.html', context=context) if request.method == 'POST': # 接收参数(文件二进制) # 拿到文件对象 avatar_file = request.files.get('avatar') try: avatar_data = avatar_file.read() except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='参数错误') try: key = upload_file(avatar_data) except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传文件到七牛云失败') user.avatar_url = key try: db.session.commit() except Exception as e: db.session.rollback() logging.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg='存储头像失败') data = {'avatar_url': constants.QINIU_DOMIN_PREFIX + key} return jsonify(errno=response_code.RET.OK, errmsg='存储头像成功', data=data)
def pic_info(): """头像信息""" user = g.user if request.method == 'GET': context = { 'user': user.to_dict() if user else None, } return render_template('news/user_pic_info.html', context=context) if request.method == 'POST': # 接收参数,校验参数 avatar_file = request.files.get('avatar') try: avatar_data = avatar_file.read() except Exception as e: current_app.logger(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='参数错误') try: # 上传头像到存储平台 key = upload_file(avatar_data) except Exception as e: return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传失败') # 保存头像信息 user.avatar_url = key try: db.session.commit() except Exception as e: db.session.rollback() return jsonify(errno=response_code.RET.DBERR, errmsg='头像保存失败') # 响应上传的结果 # 构造响应数据 data = {'avatar_url': constants.QINIU_DOMIN_PREFIX + key} print(data) return jsonify(errno=response_code.RET.OK, errmsg='上传成功', data=data)
def news_release(): user = g.user if not user: return redirect(url_for('index.index')) #2.GET请求逻辑 if request.method == 'GET': categories = [] try: categories = Category.query.all() except Exception as e: current_app.logger.error(e) categories.pop(0) context = {'categories': categories} return render_template('news/user_news_release.html', context=context) if request.method == 'POST': title = request.form.get("title") source = "个人发布" digest = request.form.get("digest") category_id = request.form.get("category_id") index_image = request.files.get("index_image") content = request.form.get("content") if not all([title, source, digest, content, index_image, category_id]): return jsonify(errno=response_code.RET.PARAMERR, errmsg="缺少参数") try: index_image_data = index_image.read() except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg="读取新闻图片失败") try: key = upload_file(index_image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg="上传新闻图片失败") # 3. 初始化新闻模型,并设置相关数据 news = News() news.title = title news.digest = digest news.source = source news.content = content news.index_image_url = constants.QINIU_DOMIN_PREFIX + key news.category_id = category_id news.user_id = g.user.id # 1代表待审核状态 news.status = 1 try: db.session.add(news) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg="存储失败") return jsonify(errno=response_code.RET.OK, srrmsg="成功")
def news_edit_detail(news_id): if request.method == 'GET': news = None categories = [] try: news = News.query.get(news_id) categories = Category.query.all() categories.pop(0) except Exception as e: logging.error(e) abort(404) if not news: abort(404) context = {'news': news.to_dict(), 'categories': categories} return render_template('admin/news_edit_detail.html', context=context) if request.method == 'POST': title = request.form.get("title") digest = request.form.get("digest") content = request.form.get("content") index_image = request.files.get("index_image") category_id = request.form.get("category_id") if not all([title, digest, content, category_id]): return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数') try: news = News.query.get(news_id) except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg='查询数据库失败') if not news: return jsonify(errno=response_code.RET.NODATA, errmsg='新闻不存在') if index_image: try: index_image_data = index_image.read() except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='图片参数错误') try: key = upload_file(index_image_data) except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传图片到七牛云失败') news.index_image_url = constants.QINIU_DOMIN_PREFIX + key news.title = title news.digest = digest news.content = content news.category_id = category_id try: db.session.commit() except Exception as e: logging.error(e) db.session.rollback() return jsonify(errno=response_code.RET.DBERR, errmsg='同步到数据库失败') return jsonify(errno=response_code.RET.OK, errmsg='ok')
def release_news(): """发布新闻""" user = g.user if not user: return render_template(url_for('index.index')) if request.method == 'GET': categories = [] try: # 查找新闻分类 categories = Category.query.filter(Category.id != 1).all() except Exception as e: current_app.logger.error(e) context = {'categories': categories} return render_template('news/user_news_release.html', context=context) if request.method == 'POST': # 接收参数, 校验参数 title = request.form.get("title") category_id = request.form.get("category_id") source = "个人发布" digest = request.form.get("digest") content = request.form.get("content") index_image = request.files.get("index_image") if not all([title, source, digest, content, index_image, category_id]): return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数') try: # 读取图片 index_image = index_image.read() except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='参数错误') # 上传图片 image_key = upload_file(index_image) # 同步数据库 news = News() news.user_id = user.id news.title = title news.source = source news.digest = digest news.content = content news.index_image_url = constants.QINIU_DOMIN_PREFIX + image_key news.category_id = category_id # 审核状态 news.status = 1 try: db.session.add(news) db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=response_code.RET.DBERR, errmsg='同步数据失败') # 返回结果 return jsonify(errno=response_code.RET.OK, errmsg='发布成功!')
def pic_info(): '''设置头像''' # 1.获取登录用户信息 user = g.user if not user: return redirect(url_for('index.index')) # 2.实现GET请求逻辑 if request.method == 'GET': # 构造渲染数据的上下文 context = { 'user': user.to_dict() } # 渲染界面 return render_template('news/user_pic_info.html', context=context) # 3.POST请求逻辑:修改用户基本信息 if request.method == "POST": # 3.1获取参数(图片) avatar_file = request.files.get('avatar') # 3.2校验参数 try: avatar_data = avatar_file.read() except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR,errmsg='读取头像失败') # 3.3调用上传的方法,将图片上传到七牛 try: key = upload_file(avatar_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传失败') # 3.4保存用户头像的key到数据库 user.avatar_url = key try: db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=response_code.RET.DBERR,errmsg='保存用户头像失败') data = { 'avatar_url':constants.QINIU_DOMIN_PREFIX + key } # 3.5响应头像上传的结果 return jsonify(errno=response_code.RET.OK,errmsg='上传头像成功',data=data)
def pic_info(): """设置头像 """ # 1.获取登录用户信息 user = g.user if not user: return redirect(url_for('index.index')) # 2.GET请求逻辑 if request.method == 'GET': # 2.1 构造渲染界面的数据 context = {'user': user.to_dict()} # 2.2 渲染界面 return render_template('news/user_pic_info.html', context=context) # 3.POST请求逻辑 if request.method == 'POST': # 上传用户头像 # 3.1 接受上传的图片文件 avatar_file = request.files.get('avatar') # 3.2 校验图片文件是否收到 try: avatar_data = avatar_file.read() except Exception as e: return jsonify(errno=response_code.RET.PARAMERR, errmsg='读取头像失败') # 3.3 将图片文件上传的七牛 try: key = upload_file(avatar_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传失败') # 3.4 上传成功将key存储到数据库 user.avatar_url = key try: db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg='存储头像信息失败') # 构造响应数据:因为要实现上传图像结束后直接刷新出该头像 data = {'avatar_url': constants.QINIU_DOMIN_PREFIX + key} # 3.5 响应上传头像结果 return jsonify(errno=response_code.RET.OK, errmsg='上传头像成功', data=data)
def pic_info(): # 1.查询登录用户基本信息 user = g.user if not user: return redirect(url_for('index.index')) #2.展示用户头像 if request.method=='GET': context = { 'user': user.to_dict() } return render_template('news/user_pic_info.html', context=context) #3.修改用户头像 if request.method == 'POST': #3.1接受图片二进制信息 image_data=request.files.get('avatar') print(type(image_data)) #3.2判断二进制文件传送成功 try: avatar_data=image_data.read() print(type(avatar_data)) except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.PARAMERR,errmsg='读取图片失败') #3.3.调用qiniu函数上传 try: key=upload_file(avatar_data) except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传七牛云失败') # user.avatar_url=constants.QINIU_DOMIN_PREFIX+key user.avatar_url=key #3.3 同步到数据库 try: db.session.commit() except Exception as e: logging.error(e) db.session.rollback() return jsonify(errno=response_code.RET.DATAERR, errmsg='保存用户头像失败') data={ 'avatar_url':constants.QINIU_DOMIN_PREFIX+key } #3.4返回上传结果 return jsonify(errno=response_code.RET.OK, errmsg='Ok',data=data)
def news_release(): user = g.user if not user: return redirect(url_for('index.index')) if request.method == 'GET': categories = None try: categories = Category.query.all() categories.pop(0) except Exception as e: logging.error(e) context = {"categories": categories} return render_template('news/user_news_release.html', context=context) if request.method == 'POST': title = request.form.get('title') # 新闻标题 source = '个人发布' category_id = request.form.get("category_id") digest = request.form.get('digest') content = request.form.get('content') index_image = request.files.get('index_image') if not all([title, source, category_id, digest, content, index_image]): return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数') try: index_image_data = index_image.read() except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='参数错误') try: key = upload_file(index_image_data) except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传七牛云失败') news = News() news.title = title news.source = source news.category_id = category_id news.content = content news.digest = digest news.index_image_url = constants.QINIU_DOMIN_PREFIX + key news.user_id = user.id news.status = 1 try: db.session.add(news) db.session.commit() except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg='添加新闻到数据库失败') return jsonify(errno=response_code.RET.OK, errmsg='添加新闻到数据库成功')
def pic_info(): """设置头像""" # 1.获取登陆信息 user = g.user if not user: return redirect(url_for('index.index')) # 2.实现get请求逻辑 if request.method == "GET": # 构造渲染数据的上下文 context = {'user': user.to_dict()} # 渲染界面 return render_template('news/user_pic_info.html', context=context) # 3.post请求逻辑:上传图片 if request.method == "POST": # 3.1获取参数 avatar_file = request.files.get('avatar') # 3.2校验参数 try: avatar_data = avatar_file.read() except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg="读取头像数据失败") # 3.3调用上传的方法,将图片上传至七牛 try: key = upload_file(avatar_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg="上传失败") # 3.4保存用户头像的key到数据库 user.avatar_url = key try: db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg="保存用户头像失败") data = {'avatar_url': constants.QINIU_DOMIN_PREFIX + key} # 3.5响应头像的上传的结果 return jsonify(errno=response_code.RET.OK, errmsg="上传成功", data=data)
def news_release(): user = g.user if not user: return redirect(url_for('index.index')) if request.method == 'GET': categorys = [] try: categorys = Category.query.all() except Exception as e: current_app.logger.error(e) categorys.pop(0) context = { 'categorys':categorys } return render_template('news/user_news_release.html',context=context) if request.method == 'POST': title = request.form.get("title") source = "个人发布" digest = request.form.get("digest") content = request.form.get("content") index_image = request.files.get("index_image") category_id = request.form.get("category_id") if not all([title, source, digest, content, index_image, category_id]): return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数') try: index_image_data = index_image.read() except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='读取头像数据失败') #将用户上传的新闻图片上传到其牛 try: key = upload_file(index_image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传图片失败') news = News() news.title = title news.digest = digest news.source = source news.content = content news.index_image_url = constants.QINIU_DOMIN_PREFIX + key news.category_id = category_id news.user_id = user.id #待审核状态 1 0通过 -1不通过 news.status = 1 try: db.session.add(news) db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=response_code.RET.DBERR, errmsg='数据图同步失败') return jsonify(errno=response_code.RET.OK, errmsg='发布新闻成功')
def news_edit_detail(news_id): '''新闻编辑详情''' if request.method == 'GET': # 直接查询要编辑的新闻 news = None try: news = News.query.get(news_id) except Exception as e: current_app.logger.error(e) abort(404) if not news: abort(404) # 查询分类的数据 categories = [] try: categories = Category.query.all() categories.pop(0) except Exception as e: current_app.logger.error(e) abort(404) context = {"news": news.to_dict(), "categories": categories} return render_template('admin/news_edit_detail.html', context=context) # 2.新闻版式详情编辑 if request.method == 'POST': # 2.1 接受参数 # news_id = request.form.get("news_id") title = request.form.get("title") digest = request.form.get("digest") content = request.form.get("content") index_image = request.files.get("index_image") category_id = request.form.get("category_id") # 2.2 校验参数 if not all([news_id, title, digest, content, category_id]): return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数') # 2.3 查询要编辑的新闻 try: news = News.query.get(news_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='查询新闻数据失败') if not news: return jsonify(errno=response_code.RET.PARAMERR, errmsg='新闻不存在') # 2.4 读取和上传图片 if index_image: try: index_image = index_image.read() except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='读取新闻数据失败') # 2.5 将标题图片上传到七牛 try: key = upload_file(index_image) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传失败') news.index_image_url = constants.QINIU_DOMIN_PREFIX + key # 2.6 保存数据并同步到数据库 news.title = title news.digest = digest news.content = content news.category_id = category_id try: db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg='保存数据失败') # 2.7 响应结果 return jsonify(errno=response_code.RET.OK, errmsg='OK')
def news_release(): """新闻发布""" # 1.获取登录用户信息 user = g.user if not user: return redirect(url_for('index.index')) # 2. GET请求逻辑:渲染发布新闻的界面 if request.method == 'GET': # 2.1 渲染新闻的分类数据 categories = [] try: categories = Category.query.all() except Exception as e: current_app.logger.error(e) # "最新"分类不是用户发布新闻时绑定的。 categories.pop(0) context = { 'categories':categories } return render_template('news/user_news_release.html',context=context) # 3. POST请求逻辑:实现新闻发布的业务逻辑 if request.method == 'POST': # 3.1 接受参数 title = request.form.get("title") source = "个人发布" digest = request.form.get("digest") content = request.form.get("content") index_image = request.files.get("index_image") category_id = request.form.get("category_id") # 3.2 校验参数 if not all([title,source,digest,content,index_image,category_id]): return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数') # 3.3 读取用户上传的新闻图片 try: index_image_data = index_image.read() except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='读取新闻图片失败') # 3.4 将用户上传的新闻图片转存到七牛 try: key = upload_file(index_image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传新闻图片失败') # 3.5 创建News新闻模型对象,并赋值和同步到数据库 news = News() news.title = title news.digest = digest news.source = source news.content = content # 纯粹是迫不得已:因为我们的是新闻类的网站,里面大部分的数据否是靠爬虫爬的,爬虫会将新闻的图片的全路径url爬下来 # 那么我们就需要存储新闻图片的全路径url http://ip:port/path news.index_image_url = constants.QINIU_DOMIN_PREFIX + key news.category_id = category_id news.user_id = user.id # 1代表待审核状态 news.status = 1 try: db.session.add(news) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg='保存新闻数据失败') # 3.6 响应新闻发布的结果 return jsonify(errno=response_code.RET.OK, errmsg='发布新闻成功')
def news_release(): '''用户新闻发布''' #1判断用户登录信息 user = g.user if not user: return redirect(url_for('index.index')) #2.请求方法为GET方法:渲染新闻分类 if request.method == 'GET': #2.1渲染新闻分类 categories = [] try: categories = Category.query.all() except Exception as e: current_app.logger.error(e) #删除最新分类 categories.pop(0) context = {'categories': categories} return render_template('news/user_news_release.html', context=context) #3.请求方法为POST if request.method == 'POST': #3.1接收参数 title = request.form.get('title') source = '个人发布' digest = request.form.get('digest') content = request.form.get('content') indext_image = request.files.get('index_image') category_id = request.form.get('category_id') #3.2校验参数 if not all([title, source, digest, content, indext_image, category_id ]): return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数') #3.3读取用户上传的新闻图片 try: indext_image_data = indext_image.read() except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='读取新闻数据失败') #3.4将用户上传的图片转存到七牛云 try: key = upload_file(indext_image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传新闻图片失败') #3.5创建News新闻模型对象,并赋值和同步到数据库 news = News() news.title = title news.digest = digest news.source = source news.content = content news.index_image_url = constants.QINIU_DOMIN_PREFIX + key news.category_id = category_id news.user_id = user.id news.status = 1 try: db.session.add(news) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg='保存新闻数据失败') #3.6响应新闻发布的结果 return jsonify(errno=response_code.RET.OK, errmsg='新闻发布成功')
def news_edit_detail(news_id): if request.method == 'GET': news = None try: news = News.query.get(news_id) except Exception as e: abort(404) if not news: abort(404) categories = Category.query.all() categories.pop(0) context = { 'news': news.to_dict(), 'categories': categories, } return render_template('admin/news_edit_detail.html', context=context) if request.method == 'POST': title = request.form.get('title') category_id = request.form.get('category_id') digest = request.form.get('digest') index_image = request.form.get('index_image') content = request.form.get('content') # 2.2 校验参数 if not all([title, digest, content, category_id]): return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数') try: news = News.query.get(news_id) except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='查询新闻数据失败') if not news: return jsonify(errno=response_code.RET.PARAMERR, errmsg='新闻不存在') if index_image: try: index_image_data = index_image.read() except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='图片参数错误') try: key = upload_file(index_image_data) except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传图片到七牛云失败') # 需要将key修改 news.index_image_url = constants.QINIU_DOMIN_PREFIX + key news.title = title news.digest = digest news.content = content news.category_id = category_id try: db.session.commit() except Exception as e: db.session.rollback() logging.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg='保存数据失败') # 2.5 响应结果 return jsonify(errno=response_code.RET.OK, errmsg='OK')
def news_release(): """新闻发布""" # 1.获取登录用户信息:没有渲染界面,不需要to_dict() user = g.user if not user: return redirect(url_for('index.index')) # 2.GET请求逻辑:渲染发布新闻的界面 if request.method == 'GET': categories = [] try: categories = Category.query.all() except Exception as e: current_app.logger.error(e) # 不需要显示"最新" categories.pop(0) context = {'categories': categories} return render_template('news/user_news_release.html', context=context) # 3.POST请求逻辑:实现新闻发布后端的逻辑 if request.method == 'POST': # 3.1 接受参数 title = request.form.get("title") source = "个人发布" digest = request.form.get("digest") content = request.form.get("content") index_image = request.files.get("index_image") category_id = request.form.get("category_id") # 3.2 校验参数 if not all([title, source, digest, content, index_image, category_id]): return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数') # 校验和读取用户上传的图片二进制,需要转存到七牛 try: index_image_data = index_image.read() except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='读取图片失败') # 将用户头像存储到七牛 try: key = upload_file(index_image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传图片失败') # 3.3 新建新闻模型对象,并赋值和同步到数据库 news = News() news.title = title news.digest = digest news.source = source news.content = content # 这里需要拼接前缀是迫不得已,因为一般的新闻的网站的数据都是从其他地方爬虫过来的,那个时候需要将爬过来的url全局保存 # 如果我在models中to_dict()中加七牛的前缀,会造成 七牛前缀+新闻图片url news.index_image_url = constants.QINIU_DOMIN_PREFIX + key news.category_id = category_id news.user_id = user.id # 1代表待审核状态 news.status = 1 try: db.session.add(news) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg='保存发布的新闻失败') # 3.4 响应新闻发布的结果 return jsonify(errno=response_code.RET.OK, errmsg='发布新闻成功')
def user_news_release(): """新闻发布""" # 1.获取登录用户信息 user = g.user if not user: return redirect(url_for('index.index')) # 2.get请求的逻辑:渲染发布新闻的界面 if request.method == 'GET': # 2.1渲染新闻分类数据 categories = [] try: categories = Category.query.all() except Exception as e: current_app.logger.error(e) # 删除最新类 categories.pop(0) context = {'categories': categories} return render_template('news/user_news_release.html', context=context) # 3.POST请求逻辑:实现新闻发布的逻辑 if request.method == 'POST': # 3.1接收参数 title = request.form.get("title") source = "个人发布" digest = request.form.get("digest") content = request.form.get("content") index_image = request.files.get("index_image") category_id = request.form.get("category_id") # 3.2校验参数 if not all([title, source, digest, content, index_image, category_id]): return jsonify(errno=response_code.RET.PARAMERR, errmsg="缺少参数") # 3.3读取用户上传的新闻的图片 try: index_image_data = index_image.read() except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg="读取新闻图片失败") # 3.4将用户上传的新闻图片转存至七牛 try: key = upload_file(index_image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg="上传新闻图片失败") # 3.5创建NEWS模型对象,并同步到数据库 news = News() news.title = title news.digest = digest news.source = source news.content = content news.index_image_url = constants.QINIU_DOMIN_PREFIX + key news.category_id = category_id news.user_id = g.user.id # 1代表待审核状态 news.status = 1 try: db.session.add(news) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg="保存新闻数据失败") # 3.6响应新闻发布的结果 return jsonify(errno=response_code.RET.OK, errmsg="发布新闻成功")
def news_edit_detail(news_id): """新闻版式编辑详情""" if request.method == 'GET': #查询要编辑的新闻 news = None try: news = News.query.get(news_id) except Exception as e: current_app.logger.error(e) abort(404) if not news: abort(404) # 查询分类 categories = [] try: categories = Category.query.all() categories.pop(0) except Exception as e: current_app.logger.error(e) abort(404) # 构造渲染数据 context = {'news': news.to_dict(), 'categories': categories} return render_template('admin/news_edit_detail.html', context=context) if request.method == "POST": # 1.接受参数 title = request.form.get('title') digest = request.form.get('digest') content = request.form.get('content') index_image = request.form.get('index_image') category_id = request.form.get('category_id') # status = request.form.get('status') # 2.校验参数 if not all([news_id, title, digest, content, category_id]): return jsonify(errno=response_code.RET.PARAMERR, errmsg="缺少参数") # 3.查询要编辑的新闻 try: news = News.query.get(news_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg="查询新闻数据失败") if not news: return jsonify(errno=response_code.RET.PARAMERR, errmsg="新闻不存在") # 4.读取和上传图片 if index_image: try: index_image = index_image.read() except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg="读取新闻图片失败") # 5.将图片上传到七牛 try: key = upload_file(index_image) except Exception as e: current_app.logger.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg="上传失败") news.index_image_url = constants.QINIU_DOMIN_PREFIX + key # 6.保存数据并同步到数据库 news.title = title news.digest = digest news.content = content news.category_id = category_id # news.status = 1 try: db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg="保存数据失败") # 7.响应结果 return jsonify(errno=response_code.RET.OK, errmsg="OK")
def news_release(): # 1.查询登录用户基本信息 user = g.user if not user: return redirect(url_for('index.index')) #2.新闻发布界面 if request.method=='GET': try: categroies=Category.query.all() categroies.pop(0) except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.DBERR, errmsg='分页分类失败') context={ 'user':user.to_dict, 'categroies':categroies } return render_template('news/user_news_release.html',context=context) if request.method=='POST': title=request.form.get('title') category_id =request.form.get('category_id') digest=request.form.get('digest') index_image=request.files.get('index_image') content=request.form.get('content') source = "个人发布" if not all([title, category_id, digest, index_image, content, source]): return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数') # 判断新闻图片是否传入到视图 try: index_image_data=index_image.read() except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.PARAMERR, errmsg='图片参数错误') # 3.3 将新闻图片上传到七牛云(核心点) try: key=upload_file(index_image_data) except Exception as e: logging.error(e) return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传七牛云失败') # user.avatar_url=constants.QINIU_DOMIN_PREFIX+key user.avatar_url=key # 3.4 将新闻的数据保存到模型类(核心点) news = News() news.title = title news.category_id = category_id news.digest = digest news.index_image_url = constants.QINIU_DOMIN_PREFIX + key # 新闻图片存储全路径 news.content = content news.source = source news.user_id = user.id # 当前新闻的发布者 news.status = 1 # 默认发布的新闻,状态为审核中 try: db.session.add(news) db.session.commit() except Exception as e: logging.error(e) db.session.rollback() return jsonify(errno=response_code.RET.DBERR, errmsg='保存新闻失败') #3.6返回响应结果 return jsonify(errno=response_code.RET.OK, errmsg='OK')