Django: привяжите два перенаправления к одной кнопке Update в зависимости от того, откуда пришел пользователь

Итак, у меня есть довольно обычная страница "обновления элемента", которая представляет собой представление на основе класса, наследующего UpdateView. (в views.py это выглядит как "class ItemUpdateView(UpdateView) и у него определен метод get_success_url(self), который содержит url перенаправления, куда пользователь попадет после нажатия кнопки "Обновить". Моя проблема в том, что в моем приложении есть две разные страницы, которые могут привести меня на эту страницу "Update item", и в зависимости от того, с какой страницы пришел пользователь - я хочу перевести пользователя обратно либо на страницуА, либо на страницуВ после успешного обновления элемента. Я не смог найти нигде в интернете лучших практик того, как это сделать, поэтому - буду очень признателен за помощь. Я предполагаю, что мне нужно создать дополнительный параметр, который будет частью url и будет содержать A или B в зависимости от страницыA или страницыB, с которой пришел пользователь, т.е. сам url будет иметь вид '/itemUpdate/int:pk/sourcepage' => '/itemUpdate/45/A'. Похоже ли это на правильный подход или есть лучший способ?

Есть лучший способ, который позволяет проверить Meta словарь в запросе:

запишите в вашем views файле:

class ItemUpdateView(UpdateView):
    previous_url = ''

    def get(self, request, *args, **kwargs):
        self.previous_url = request.META.get('HTTP_REFERER')
        print(self.previous_url) 
        return super().get(request, *args, **kwargs)

    def get_initial(self):
       initial = super().get_initial()
       initial['success_url'] = self.previous_url
       return initial

    def get_success_url(self):
       return super().get_form().instance.success_url #if you have ModelForm

и затем напишите hidden field в вашей форме и назовите ее success_url
. но я не знаю, используете ли вы modelform или form

class YourForm(forms.ModelForm):
    success_url = forms.URLField(widget=forms.HiddenInput)
    # other fields
 

ссылка на документы

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