как исправить "index () отсутствует 1 обязательный позиционный аргумент: 'страница'"? - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь выполнить сортировку по функциям на своем веб-сайте, и у меня возникла эта проблема.это мой код:

@app.route("/", defaults={'page':0, 'type':'top'})
@app.route("/<type>")
@app.route('/page/<int:page>')
def index(type, page):
    perpage=5
    startat=page*perpage
    cur = mysql.connection.cursor()
    if type=='top':
        cur.execute("SELECT * FROM posts LIMIT %s, %s ORDER BY upvotes ASC", (startat,perpage))
        data = cur.fetchall()
        cur.close()
        return render_template("index.html", dat=data)
    elif type=='new':
        cur.execute("SELECT * FROM posts LIMIT %s, %s ORDER BY created_at ASC", (startat,perpage))
        data = cur.fetchall()
        cur.close()
        return render_template("index.html", dat=data)

так в чем проблема?

PS: это хороший подход для сортировки по признакам наряду с нумерацией страниц, если нет, то в чем заключаетсялучший подход?

СПАСИБО

1 Ответ

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

Можно добраться до index(), не определяя тип или не определяя, что это за страница.

  • Если вы идете на /t, то вы звоните index(type="t"). В этом случае вы не указываете page.
  • Если вы идете на /page/p, вы звоните index(page="p"). В этом случае вы не указываете type.

Поскольку сама функция не имеет значений по умолчанию для этих аргументов, она выдает ошибку. Простое решение здесь состоит в том, чтобы вместо значений по умолчанию в @app.route("/") поместить их в сам заголовок функции:

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

Эти значения по умолчанию будут перезаписаны, если указано <type> или <page>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...