Почему я не могу корректно перейти по ссылке через html файле?
Возникла проблема с переходом по ссылкам через url_for. Использую Flask, Python. Имеется страница profile, html код следующий:
{% extends 'base.html' %}
{%block content %}
{{ super () }}
<h2>{{role}}: {{nameOfTeacher}}</h2>
<p> {{current_user.get_id()}}</p>
<p class="title"><a href = "{{ url_for('showWorksByMe', user_id = current_user.get_id()) }}">Задания, выданные мной</a></p>
<p><a href="{{url_for('logout')}}">Выйти из профиля</a></p>
{% endblock %}
Как видно из кода, перехожу в функцию showWorksByMe, передаю значение user_id из функции get_id.
Функция showWorksByMe:
@app.route('/profile/<user_id>/worksbyme')
@login_required
def showWorksByMe(user_id):
if current_user.is_professor(mainCursor):
print(current_user.id_of_professor(mainCursor)) # просто как заглушка
else:
flash("У вас нет прав доступа к данной странице", "error")
return redirect(url_for('login'))
return render_template("worksByMe.html", title="Преподаватель-Профиль", tasks=fDataBase.getTaskAnnonceByMe(mainCursor, current_user.id_of_professor(mainCursor)))
В функции getTaskAnnonceByMe получаю номер и название работы часть кода worksByMe.html:
<h2>Задания, выданные вами</h2>
<ul class = "list-tasks">
{% for t in tasks %}
<li>
<p class="title"><a href="{{ url_for('essayResp', post_id=t.WorkID, user_id = current_user.get_id()) }}">{{t.NameOfWork}}</a></p>
</li>
{% endfor %}
</ul>
Суть в том, что данная страница worksByMe.html не открывается, выходит ошибка 500, а в терминале выходит следующее:
werkzeug.routing.BuildError: Could not build url for endpoint 'profile'. Did you forget to specify values ['user_id']?
Однако если просто пропринтить url_for, указанный в html файле страницы profile (самая первая), то выйдет это:
/profile/4/worksbyme
, где 4 - ID юзера. Т.е. значение передается. Однако почему-то возникает ошибка. Где я ошибся? Нужна помощь!