我正在尝试为1个用户的帖子制作一个Pagination对象。 当用户是current_user:
时,一切都OK@auth.route('/auth/edit_profile', methods=['GET', 'POST'])
def edit_profile():
###
page = request.args.get('page', 1, type=int)
pagination = current_user.posts.order_by(Post.timestamp.desc()).paginate(
page, per_page=15, error_out=False)
posts = pagination.items
return render_template('auth/edit_profile.html', form=form,
user=current_user, posts=posts, pagination=pagination)
但是如果在这样的方法中查询它:
@main.route('/user/<username>')
def user_profile(username):
target_user = User.query.filter_by(username=username).first()
if not target_user:
abort(404)
page = request.args.get('page', 1, type=int)
pagination = target_user.posts.order_by(Post.timestamp.desc()).paginate(
page, per_page=15, error_out=False)
posts = pagination.items
return render_template('user_profile.html', user=target_user, posts=posts,
pagination=pagination, page=page)
这是编译时的问题。
werkzeug.routing.BuildError
BuildError: ('main.user_profile', {'page': 1}, None)
我知道这种错误与没有特定视图功能的路由有关。在这种情况下,这是否意味着我没有指定Page-1-content或什么?
请帮助我..我正在从头开始学习编码0.0
答案 0 :(得分:0)
这意味着它无法在主蓝图中找到一个名为user_profile的函数(如果您使用的是url_for
),并且此函数应该使用一个名为page的参数。例如像这样。
@WebApp.app.route('/errors_log/<int:page>', methods=['GET', 'POST'])
@flask_login.login_required
def errors_log(page):
答案 1 :(得分:0)
Zyber是正确的,但这里有更多信息:
werkzeug.routing.BuildError
BuildError: ('main.user_profile', {'page': 1}, None)
表示没有名为user_profile
的路由接受page
的命名参数。您做的路线名为user_profile
,但它只接受username
参数,如
@main.route('/user/<username>')
def user_profile(username):
我可以看到你在请求中寻找pages
GET变量:
page = request.args.get('page', 1, type=int)
请注意,您不会将GET参数传递给模板中的url_for
,因为这会使Flask将其渲染为部分URL路由而不是GET参数。您没有名为user_profile
的方法在路由中使用page
变量。
相反,请尝试
{{ url_for('user_profile', username=[username]) }}?page=[page #]