Flask 多重路由url指向同一檢視函式

NO IMAGE

Flask 有時候會遇到需要兩種情況走同一檢視函式的時候,比如分頁

#這種情況下傳頁碼就走你傳的頁碼,不傳預設走第一頁
@admin.route("/auth/list/<int:page>/",methods = ["GET"])
@admin.route("/auth/list/",methods = ["GET"])
def auth_list(page = None):
'''許可權列表'''
if not page:
page = 1
page_data = Auth.query.paginate(page = page,per_page = 10)
return render_template("admin/auth_list.html",page_data = page_data)

這裡順便把Flask頁碼的巨集貼出來,用的時候只需要import進來就好了

/static/ui/page.html
{% macro page(data,url) -%}
{% if data %}
<ul class="pagination pagination-sm no-margin pull-right">
<li><a href="{{ url_for(url,page=1) }}">首頁</a></li>
{% if data.has_prev %}
<li><a href="{{ url_for(url,page=data.prev_num) }}">上一頁</a></li>
{% else %}
<li class="disabled"><a href="#">上一頁</a></li>
{% endif %}
{% for v in data.iter_pages() %}
{% if v == data.page %}
<li class="active"><a href="#">{{ v }}</a></li>
{% else %}
<li ><a href="{{ url_for(url,page=v) }}">{{ v }}</a></li>
{% endif %}
{% endfor %}
{% if data.has_next %}
<li><a href="{{ url_for(url,page=data.next_num) }}">下一頁</a></li>
{% else %}
<li class="disabled"><a href="#">下一頁</a></li>
{% endif %}
<li><a href="{{ url_for(url,page=data.pages) }}">尾頁</a></li>
</ul>
{% endif %}
{%- endmacro %}

使用

{% import "ui/page.html" as pg %}
<div class="box-footer clearfix">
{{ pg.page(page_data,'admin.auth_list') }}##引數是資料和路徑
</div>