1. 程式人生 > >Flask 多重路由url指向同一檢視函式

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

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>