@sergey19940808

Flask, почему при отправке запроса получаю ошибку 404?

Вот вьюшка, показывает запись(стих) и содержит форму отправки комментария:

@app.route('/comment_entry/<int:id>', methods=['GET', 'POST'])
@login_required
def comment_entry(id):
    title = 'Показать стих'
    comment_entry = Entry.query.get_or_404(id)
    form = CommentForm()
    if current_user and form.validate_on_submit():
        comment_add = Comment(body=form.body.data, 
                              pub_date=datetime.now(),
                              author_comment=current_user, 
                              entry_comment=comment_entry)
        db.session.add(comment_add)
        db.session.commit()
        flash('Вы добавили свой комментарий')
        return redirect(url_for('comment_entry', id=comment_entry.id))
    return render_template('entry/comment_entry.html',
                           title=title, entry=comment_entry, form=form)

При отправке комментария получаю ошибку 404.

Вот шаблон этой вьюшки:
{% extends 'layout/base.html' %}
{% block content %}
    <div class="show_entry">
        <img src="{{ entry.users.avatar(130) }}">
        <p>Пользователь: <strong>{{ entry.users.nickname }}</strong></p>
        <p><strong>Тема: {{entry.title}}</strong></p>
        <pre><big>{{ entry.text }}</big></pre>
        <p>{{ entry.pub_date }}</p>
        <br>
    </div>

<form method=post action=comment_entry align=center>
    {{ form.hidden_tag() }}
    <p><kbd>{{ form.body.label }}:</kbd></p>
    <pre>{{ form.body(cols=52, rows=4) }}</pre>
    <div class="bg-info">
        {% for error in form.errors.body %}
        <span>{{ error }}</span>
        {% endfor %}
    </div>
     <button type=submit class="btn btn-success-outline">Добавить комментарий</button>
</form>
{% endblock %}

Почему я получаю такую ошибку ?
  • Вопрос задан
  • 364 просмотра
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Я в вашей форме вообще не вижу отправки id.... Может быть это через javascript делается, тогда и смотрите, что вам браузер отправляет, и по какому url. В браузере включите режим для разработчиков, там все запросы видны.
Ну и должно быть что-то типа этого в шаблоне
<form ... action="{{url_for('.comment_entry',id=entry.id)}}" ... > ...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы