#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). Все несоответствующие символы заменяются. Вы можете сделать это либо с помощью библиотеки, либо вручную. Затем полученная идентификация добавляется к заметке в базе данных, чтобы вы могли запросить заметку на основе этого. Преобразованный заголовок используется в правиле для маршрута, так что он извлекается и передается как переменная при вызове.