返回RedirectView

时间:2014-08-01 17:09:47

标签: python django

我需要返回RedirectView。这些都不起作用:

class FooView(View):
  return SomeRedirectView

class FooView(View):
  return SomeRedirectView.as_view()

class FooView(View):
  return HTTPResponseRedirect(SomeRedirectView)

如何返回RedirectView?

编辑:伙计们,我的想法是我需要从Class返回。但看起来像是不这样做。那么一个人如何从一个班级回来?

编辑2:抱歉,我还不清楚。我知道如何使用单个RedirectView重定向用户。我有一个RedirectView:

class MyRedirectView(RedirectView):
  def get_redirect_url():
    return 'www.google.com'

我需要将MyRedirectView作为单独的视图,因为它在某处被用作独立的View。但后来我完全没有其他View,它必须使用逻辑,然后“调用”MyRedirectView

问题是,SomeOtherView如何看起来像? ( MyRedirectView

class SomeOtherView(View):
  def get():
    return MyRedirectView ????

解决方案:在其他SO成员的帮助下,我得出的结论是我的想法是错误的。我没有重复代码,我可以使用函数。我无法调用类或返回视图。但是我可以使用公共函数并从MyRedirectView和FooView(或任何其他视图)中调用它。

感谢大家的帮助和良好的讨论!

2 个答案:

答案 0 :(得分:2)

我不知道为什么你认为你需要返回一个视图。如果现有视图需要返回重定向,那么您应该这样做:

from django.shortcuts import redirect


class SomeOtherView(View):
  def get(request):
    ... logic here...
    return redirect(my_redirect_destination)

答案 1 :(得分:1)

docs您的观点需要成为RedirectView的子类:

from django.core.urlresolvers import reverse
from django.views.generic.base import RedirectView

class MyRedirectView(RedirectView):

    permanent = False
    query_string = True

    def get_redirect_url(self, pk):
        return reverse('example', args=(pk,))

Here's a good example使用基础RedirectView


虽然您没有提及urls.py个文件,但您需要在其中调用MyRedirectView.as_view()。再次,在文档中的很好的例子。这是要点:

from views import MyRedirectView

urlpatterns = patterns('',
    url(r'^someURL/$', MyRedirectView.as_view(), name='my-redirect-view'),
    ...
)
相关问题