Django - Передача дополнительного аргумента из шаблона в urls.py для представления на основе класса

В принципе, я хотел бы перейти от страницы, показывающей таблицу (которая является результатом запроса пользователя), к странице, где пользователь может редактировать запись в таблице (эта страница построена с использованием UpdateView), а затем сразу вернуться к предыдущей странице, но на этот раз показывая таблицу с отраженным новым обновлением

Здесь есть другие сообщения о похожих ситуациях, но ни в одном из них не показано, как реализовать это с помощью представления на основе класса, поэтому любой совет здесь будет очень признателен.

На данный момент я пришел к следующему подходу. Здесь я пытаюсь передать параметр, содержащий URL страницы таблицы, из шаблона страницы таблицы в urls.py, а затем в представление. Однако я не думаю, что использую правильный синтаксис в urls.py, так как значение параметра previous_url в представлении просто "previous_url".

Ссылка в шаблоне для страницы таблицы

<a href="{% url 'entry_detail' item.pk %}?previous_url={{ request.get_full_path|urlencode }}">Edit</a>

URL

path('entry/<int:pk>/edit/', EntryUpdateView.as_view(previous_url="previous_url"), name='entry_update'),

View

class EntryUpdateView(LoginRequiredMixin, UpdateView):
    model = Entry
    template_name = 'entry_update.html'
    fields = ('source', 'target', 'glossary', 'notes')
    previous_url = ""

    def form_valid(self, form):
        obj = form.save(commit=False)
        obj.updated_by = self.request.user
        obj.save()
        return HttpResponseRedirect(self.previous_url)

Обновление формы

<form method="POST" novalidate>

    {% csrf_token %}

    <div class="mb-3">
        {{ form.source|as_crispy_field }}
    </div>

    <div class="mb-3">
        {{ form.target|as_crispy_field }}
    </div>

    <div class="mb-3">
        {{ form.glossary|as_crispy_field }}
    </div>

    <div class="mb-3">
        {{ form.notes|as_crispy_field }}
    </div>

    <div class="text-center mt-3">
        <button type="submit" class="btn btn-outline-primary mx-2">Update</button>
    </div>

</form>

Ошибка

Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/entry/5131/edit/previous_url

Если это кому-то поможет, я смог получить значение previous_url внутри form_valid(), используя self.request.GET.get('previous_url').

def form_valid(self, form):
    obj = form.save(commit=False)
    obj.updated_by = self.request.user
    obj.save()
    previous_url = self.request.GET.get('previous_url')
    return HttpResponseRedirect(previous_url)
Вернуться на верх