这是我的视图功能:
def get_user_info():
form = UserInfoForm()
query = UserInfo.query
if form.validate_on_submit():
query = query.filter_by(sex=form.sex.data)
flag = False
page = request.args.get('page', 1, type=int)
pagination = query.paginate(page=page, per_page=10, error_out=False)
return render_template("user_info.html", form=form,data=pagination.items, pagination=pagination)
这是我的html的一部分:
<form class="form-inline" action="{{url_for('.get_user_info')}}", method="post">
{{ form.csrf_token }}
<div class="panel-body">
<div class="form-group">
{{ form.sex.label }}:
{{ form.sex(class="form-control") }}
</div>
<div class="form-group">
{{ form.submit(class="btn btn-primary") }}
</div>
</div>
这是我的分页宏:
{% macro pagination_widget(pagination, endpoint) %}
{% if pagination.total != 0 %}
<ul class="pagination">
<li{% if pagination.page == 1 %} class="disabled"{% endif %}>
<a href="{% if pagination.page != 1 %}{{ url_for(endpoint, page=1, **kwargs) }}
{% else %}#{% endif %}">««</a>
</li>
<li{% if not pagination.has_prev %} class="disabled"{% endif %}>
<a href="{% if pagination.has_prev %}{{ url_for(endpoint, page=pagination.page - 1, **kwargs) }}
{% else %}#{% endif %}">«</a>
</li>
{% for p in pagination.iter_pages() %}
{% if p %}
<li {% if p == pagination.page %} class="active"{% endif %}>
<a href="{{ url_for(endpoint, page = p, **kwargs) }}">{{ p }}</a>
</li>
{% endif %}
{% endfor %}
<li{% if not pagination.has_next %} class="disabled"{% endif %}>
<a href="{% if pagination.has_next %}{{ url_for(endpoint, page=pagination.page+1, **kwargs) }}
{% else %}#{% endif %}">»</a>
</li>
<li{% if pagination.page == pagination.pages %} class="disabled"{% endif %}>
<a href="{% if pagination.page != pagination.pages %}{{ url_for(endpoint, page=pagination.pages, **kwargs) }}
{% else %}#{% endif %}">»»</a>
</li>
</ul>
{% endif %}
{% endmacro %}
我在我的页面中使用了一个selectfiled sex,当我在我的页面中选择男性时,我得到了paginate对象,我的第一页用户都是男性。但是当我点击下一页时,结果将包括男性和女性,我只想要它像第一页,它只有男性用户信息。感谢。
答案 0 :(得分:0)
我今天解决了我的问题。 任何宏都有* args和** kwargs,所以我可以将查询条件的参数传递给它,在我的视图函数中使用request.args.get()来获取参数并将其设置为form。