Как я могу создать переменное количество ссылок, используя Flask и HTML?

#python #html #flask

#python #HTML #flask

Вопрос:

Позвольте мне объяснить мою ситуацию. Я создаю приложение для заметок, используя flask и HTML. Я хочу, чтобы при нажатии на одну из ссылок вы переходили к ссылке с заголовком, но она не работает! Я использую ArangoDB. Вот мой HTML-код:

 <!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{{welcome}}</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.1/css/bulma.min.css">
  </head>
  <body>
    <section class="section has-text-centered">
      <h1 class="title is-2">Hi {{username}}!</h1>
      <a href={{url_for('new')}} class="button is-rounded is-outlined is-primary">Create a note</a>
      <a href={{url_for('handle_logout')}} class="button is-rounded is-outlined is-danger">Log out</a>
    </section>
    <section>
      <ul>
        {% for note in notes %}
          <li>
            <a class="button is-light is-fullwidth" href="/{{note.title}}">{{note.title}}</a>
          </li>
        {% endfor %}
      </ul>
    </section>
  </body>
</html> 

и вот соответствующий код python:

 @app.route("/notes")
def notes_page():
    global notes
    notes = db.collection("Users")[username]["notes"]
    if username != "":        
        return render_template("notes.html", username=username, notes=notes, welcome=welcome)
    else:
        return redirect(url_for("home"))

try:
    for i in notes:
        url = "/"   i["title"]
        @app.route(url)
        def view_note():
            return render_template("view.html", title=i["title"], note=i["note"])
except NameError:
    pass
    
 

Я запустил код и нажал на ссылку для созданной мной тестовой заметки, и когда я был перенаправлен, появилось сообщение об ошибке 404, в котором говорилось, что ссылка не найдена. Не могли бы вы помочь мне исправить это? Спасибо

Комментарии:

1. Где определены другие маршруты? (new и handle_logout)

2. Вы должны преобразовать заголовок в вариант, совместимый с URL (slugify). Все несоответствующие символы заменяются. Вы можете сделать это либо с помощью библиотеки, либо вручную. Затем полученная идентификация добавляется к заметке в базе данных, чтобы вы могли запросить заметку на основе этого. Преобразованный заголовок используется в правиле для маршрута, так что он извлекается и передается как переменная при вызове.