Почему я получаю сообщение об ошибке NoReverseMatch? - PullRequest
0 голосов
/ 31 марта 2020

Я создаю веб-сайт с фотогалереей, где пользователи могут добавлять комментарии. Когда я go перехожу на страницу фотогалереи, я получаю следующее сообщение об ошибке:

NoReverseMatch в / photo_feed / Обратный для 'add_comment' с аргументами '(' ',)' не найден. Попробован 1 шаблон (ов): ['add_comment / $']

Код соответствующей части HTML документа выглядит следующим образом:

                <h2>comments</h2>
            {% if not comments %}
            No comments
            {% endif %}
            {% for x in comment %}
            <div class="comments" style="padding: 10px;">
                <p class="font-weight-bold">
                    <h4>Comment by</h4> {{ x.user }}
                    <span class=" text-muted font-weight-normal">
                        {{ x.created_on }}
                    </span>
                </p>
                {{ x.body | linebreaks }}
            </div>
            {% endfor %}
        </div>
        <div class="card-body">
            {% if new_comment %}
            <h2>Your comment has been posted.</h2>
            {% else %}
            <h3>Leave a comment</h3>
            <form action="{% url 'nowandthen:add_comment' image.id %}" method="POST">
                {{ comment_form.as_p }}
                {% csrf_token %}
                <button type="submit" class="btn btn-primary  btn-lg">Submit</button>
            {% endif %}

URL-адреса .py запись для add_comment path('add_comment/<int: image_id>', views.add_comment, name='add_comment'). Удаление int: image_id не решает проблему.

Это мои views.py:

@login_required
def add_comment(request, image_id):
new_comment = None
template_name = 'add_comment.html'
image = get_object_or_404(Picture, id=image_id)
comment = image.comments.filter(active=True)
new_comment = None
# Comment posted
if request.method == 'POST':
    comment_form = CommentForm(data=request.POST)
    if comment_form.is_valid():
        # Create Comment object and don't save to database yet
        new_comment = comment_form.save(commit=False)
        # Assign the current post to the comment
        new_comment.post = post
        # Save the comment to the database
        new_comment.save()
else:
    comment_form = CommentForm()

context = {'image': image,'comment': comment, 'new_comment': new_comment,'comment_form': comment_form}

return render(request, template_name, context)

Когда я go в админке, идентификаторы для фотографий не генерируются. Может быть, проблема в том, что отсутствуют идентификаторы? Если да, то как мне это исправить?

URL хранилища: https://github.com/EmilyQuimby/my_now_and_then.

Спасибо.

1 Ответ

0 голосов
/ 31 марта 2020

В файле шаблона (в вашем хранилище) я вижу, что вы получаете доступ к изображению через p.image ( здесь ). Возможно, вам следует использовать p.image.id вместо image.id в теге {% url %}.

Также попробуйте удалить пробел между int: и image_id, как рекомендовано Charnel в комментариях.

<form action="{% url 'nowandthen:add_comment' p.image.id %}" method="POST">
...