重定向到Django中的同一页面

时间:2019-10-19 17:46:52

标签: django django-models django-templates django-views

每次尝试重定向到Django的同一页面时,我总是收到ERR_TOO_MANY_REDIRECTS错误。我尝试使用return HttpResponseRedirect('') return HttpResponseRedirect(self.request.path_info)给出了空白屏幕,并出现了 ERR_TOO_MANY_REDIRECTS 错误分别。我同样尝试过:

**views.py**
class Test(DetailView):
   def get(self, request, *args, **kwargs):
        self.object = self.get_object()
        if check.objects.filter(active=True):
            return redirect(reverse('service', kwargs={"pk": self.object.pk}))
        else:
           render(self.request, 'page/details.html') # redirect to same page.

url.py

path('test/<int:pk>/details', Test.as_view(), name='details'),
path('check/secure/<int:pk>', Others.as_view(), name='service'),

1 个答案:

答案 0 :(得分:2)

上面的内容终于通过以下解决了

在您的视图中,您可以呈现页面而不用像这样重定向页面

class Test(DetailView):
    def get(self, request, *args, **kwargs):
        self.object = self.get_object()
        if check.objects.filter(active=True):
            return redirect(reverse('service', kwargs={"pk": self.object.pk}))
        else:
           return render(self.request, 'page/details.html', {'jobs': Jobs.objects.all()}) # redirect to same page.

然后在模板中,您只需使用forloop呈现列表,

{% for job in jobs %}
     {{ job }}
{% endfor %}

希望这会有所帮助!