Python 如何在flask中进行高级url路由?

Python 如何在flask中进行高级url路由?,python,flask,Python,Flask,这是我的代码: @app.route("/") @app.route("/<type>") @app.route('/page/<int:page>') def index(type="top", page=0): perpage=5 startat=page*perpage cur = mysql.connection.cursor() if type=='top': cur.execute("SELECT * FROM

这是我的代码:

@app.route("/")
@app.route("/<type>")
@app.route('/page/<int:page>')
def index(type="top", page=0):
    perpage=5
    startat=page*perpage
    cur = mysql.connection.cursor()
    if type=='top':
        cur.execute("SELECT * FROM posts ORDER BY likes DESC LIMIT %s, %s", (startat,perpage))
        data = cur.fetchall()
        cur.close()
        return render_template("index.html", dat=data)
    elif type=='new':
        cur.execute("SELECT * FROM posts ORDER BY created_at DESC LIMIT %s, %s", (startat,perpage))
        data = cur.fetchall()
        cur.close()
        return render_template("index.html", dat=data)
@app.route(“/”)
@附件路线(“/”)
@app.route(“/page/”)
def索引(type=“top”,第0页):
每页=5
startat=每页*页
cur=mysql.connection.cursor()
如果类型=='top':
当前执行(“按限制%s,%s从POST订单中选择*,(开始,每页))
data=cur.fetchall()
当前关闭()
返回render_模板(“index.html”,dat=data)
elif类型=='new':
当前执行(“从描述限制%s,%s处创建的POST订单中选择*,(开始,每页))
data=cur.fetchall()
当前关闭()
返回render_模板(“index.html”,dat=data)
我正试图使分页按照的顺序一起工作而不会出现问题:

  • /page/1
    有效
  • 但是
    /new/page/1
    不起作用

那么如何解决这个问题呢?

您创建了一个糟糕的URL体系结构:有两个类似的URL:
@app.route(“/page”)
@app.route(“/”)
,因为
type
是一个字符串变量,可以分配给
page

无论如何,要解决您的问题,您需要创建一个不易混淆的URL。例如:

@app.route("/")
@app.route("/page/<type>/")
@app.route('/page/<type>/<int:page>')
def index(type="top", page=0):
    perpage=5
    #...

这不管用,但你给了我一个主意:
@app.route(“/”@app.route(“/”@app.route(“//page/”)def index(type=“top”,page=0):
ye3tik sahha-Taherشمم。7月7日,纳赛斯,7月5日。
@app.route("/")
@app.route("/some-text/<type>")
@app.route('/page/<int:page>')
def index(type="top", page=0):
    perpage=5