Как сделать расширенную маршрутизацию URL в колбе? - PullRequest
0 голосов
/ 14 июня 2019

это мой код:

@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)

Я пытаюсь заставить нумерацию страниц по заказу по работать вместе без проблем:

  • /page/1 работает
  • но /new/page/1 не работает

Так как это исправить?

1 Ответ

0 голосов
/ 15 июня 2019

Вы создали архитектуру неверных URL-адресов: существует два похожих URL-адреса: @app.route("/page") и @app.route("/<type>"), поскольку type является строковой переменной и может быть присвоено значение page.

В любом случае,Чтобы решить вашу проблему, вам нужно создать непонятные URL-адреса.Например:

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

В этом случае type нельзя присвоить пустой строке в качестве значения по умолчанию.

Другое возможное решение:

@app.route("/")
@app.route("/some-text/<type>")
@app.route('/page/<int:page>')
def index(type="top", page=0):
    perpage=5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...