Форма Django POST принимается всеми кнопками, кроме 1. Потенциальная ошибка?

Я в полном тупике. У меня есть рабочее представление Django, которое отображало 'posts' для каждого поста в переданном ему списке.

list.html

    {% for p in posts %}
    
    #code to display post in a list>

    <form action="{% url 'archive_commit' p.oid %}" method="post">
        {% csrf_token %}
        <input type="hidden" name="next" value="{{ request.path }}">
        {% if p.is_archived %}
            <input type="hidden" name="action" value="unarchive">
            <button type="submit", name="p_oid", value="{{ p.oid }}", class="btn btn-primary btn-sm">Unarchive</button>
        {% else %}
            <input type="hidden" name="action" value="archive">
            <button type="submit", name="p_oid", value="{{ p.oid }}", class="btn btn-primary btn-sm">Archive</button>
        {% endif %}
    </form>

Когда я нажимаю на кнопку архива, он вызывает следующий шаблон URL и вид.

urls.py

url(r'^archive/(?P<oid>.+)/$', views.archive_view, name='archive_post'),

views.py

def archive_view(request, oid):
    post = get_object_or_404(models.Post, oid=request.POST.get('p_oid'))
    archive_query_param = ''

    if request.POST.get('action') == 'archive':
        post.is_archived = True
        post.save()
        messages.success(request, ('Post ' + oid + ' has been archived'))
    else:
        post.is_archived = False
        post.save()
        messages.success(request, ('Post ' + oid + ' has been restored'))
        archive_query_param = '?archived=True/'

    next = request.POST.get('next', '/')
    return HttpResponseRedirect(next + archive_query_param)

Вот с какой проблемой я сталкиваюсь. КАЖДЫЙ пост на странице ведет себя как положено, переходя к просмотру и архивируя пост, а затем возвращаясь к следующему, за исключением первого поста в списке. Этот пост просто добавляет параметры запроса формы к своему url и повторно отправляется, не отправляя POST запрос.

например, нажатие кнопки 'archive' для 3 успешных сообщений, за которым следует первое.

[10/Sep/2021 17:46:19] "POST /archive/684f2176015b313ab59cecf574117969cf638f28/ HTTP/1.1" 302 0
[10/Sep/2021 17:46:19] "GET /filter/ HTTP/1.1" 200 3678
[10/Sep/2021 17:46:23] "GET /filter/?tree=torvalds&notin=&path=ip&excl= HTTP/1.1" 200 48869

[10/Sep/2021 17:47:07] "POST /archive/787e9208360117835101f513f7db593dc2525cf8/ HTTP/1.1" 302 0
[10/Sep/2021 17:47:07] "GET /filter/ HTTP/1.1" 200 3678
[10/Sep/2021 17:47:11] "GET /filter/?tree=torvalds&notin=&path=ip&excl= HTTP/1.1" 200 57921

[10/Sep/2021 17:47:12] "POST /archive/b1da683d17972fc851c46331a5efa801bddf9273/ HTTP/1.1" 302 0
[10/Sep/2021 17:47:12] "GET /filter/ HTTP/1.1" 200 3678
[10/Sep/2021 17:47:15] "GET /filter/?tree=torvalds&notin=&path=ip&excl= HTTP/1.1" 200 57868

[10/Sep/2021 17:47:24] "GET /filter/?tree=torvalds&notin=&path=ip&excl=&csrfmiddlewaretoken=hI8jy2ALkYmZok3rEwISyiFfH9BURAJiZjIGkgkBL02GMhMlAWXdT7gjyKcIn9Nk&next=%2Ffilter%2F&action=archive&c_oid=fefae48bf8caab7d56ee4f8181f06602cf73d29e HTTP/1.1" 200 57952

Когда я пытаюсь архивировать первое сообщение на странице, я получаю следующее. Я заполняю список из оператора "for p in posts", поэтому я не уверен, что это сообщение может отличаться от других, все они являются одним и тем же объектом. Более того, если я вручную архивирую это первое сообщение, а затем перезагружаю страницу, новое первое сообщение не архивируется, поэтому я считаю, что это вопрос позиции на странице. Подскажите, что может быть причиной такого странного поведения?

Спасибо

Вернуться на верх