Django: Redirect to same page after POST method using class based views

后端 未结 5 406
不思量自难忘°
不思量自难忘° 2020-12-28 14:05

I\'m making a Django app that keeps track of tv show episodes. This is for a page on a certain Show instance. When a user clicks to add/subtract a season, I want the page to

相关标签:
5条回答
  • 2020-12-28 14:23
    from django.http import HttpResponseRedirect
    
    def someview(request):
    
       ...
       return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
    

    taken from: https://stackoverflow.com/a/12758859/14020019

    0 讨论(0)
  • 2020-12-28 14:27

    For CBV:

    from django.http import HttpResponseRedirect
    
    
    return HttpResponseRedirect(self.request.path_info)
    

    For function view:

    from django.http import HttpResponseRedirect
    
    
    return HttpResponseRedirect(request.path_info)
    
    0 讨论(0)
  • 2020-12-28 14:30

    You can achieve this by redirecting to HTTP_REFERER header and for fallback just add another path.

    Example snippet:

    return redirect(request.META.get('HTTP_REFERER', 'redirect_if_referer_not_found'))
    
    0 讨论(0)
  • 2020-12-28 14:33

    I am guessing you need to provide a kwarg to identify the show when you redirect, although I can't see the code for your DetailView I would assume the kwarg is called either pk or possibly show going from the convention you've used in AddSeason and SubtractSeason. Try:

    redirect('show:detail', kwargs={'show': instance.pk})
    

    EDIT: the name of the detail url is 'show-detail', so the scoped viewname would be 'show:show-detail' (if it is in the show namespace like the other urls). I still think it would need a kwarg though, try:

    redirect('show:show-detail', kwargs={'show': instance.pk})
    
    0 讨论(0)
  • 2020-12-28 14:35

    to redirect to the same page (e.g. an http GET) after a POST, I like...

    return HttpResponseRedirect("")   # from django.http import HttpResponseRedirect
    

    it also avoids hardcoding the show:detail route name, and is a lil' clearer intention wise (for me at least!)

    0 讨论(0)
提交回复
热议问题