如何从一个烧瓶Api中呈现Json Request和Html模板


@adm.route('/list_users', methods=['GET'])
@login_required`enter code here`
@admin_permission.require(http_exception=403)
def list_users():
try:
if (request.content_type.startswith('application/json')):
def processjsonlist():
@csrf.exempt
try:
page = request.args.get('page', 1, type=int)
recs = current_app.config.get('RECORDS_PER_PAGE')
list_user = Person.query.order_by(
Person.id).paginate(page, recs, False)
rv = []
for person in list_user.items:
tmp = {}
tmp['id']=person.id
tmp['username'] = person.username
tmp['first_name'] = person.first_name
tmp['middle_name'] = person.middle_name
tmp['last_name'] = person.last_name
tmp['employee_code'] = person.employee_code
tmp['active'] = person.active
tmp['email'] = person.email
tmp['mobile'] = person.mobile
tmp['roles'] = [role.description for role in person.roles]
rv.append(tmp)
return jsonify({"data": rv})
except Exception as error:
return jsonify(error=repr(error))
else:
page = request.args.get('page', 1, type=int)
recs = current_app.config.get('RECORDS_PER_PAGE')
pagination = Person.query.order_by(
Person.id).paginate(page, recs, False)
search_form = SearchForm()
return render_template('adm/user_list.html', pagination=pagination, 
search_form=search_form)
except Exception as e:
flash_exception(e, 'danger')
return redirect(url_for('adm.getIndex'))

对于单个请求,不能在同一响应中同时呈现HTML和JSON。但是,您可以允许Accept标头来确定端点呈现的是HTML还是JSON。整个响应必须是一个或另一个,但不能混合。我没有用烧瓶,所以我不知道如何在你的项目中做到这一点的确切细节。希望这能给你一些术语来帮助你的谷歌搜索。

最新更新