如何在django的templateview中重定向url

时间:2013-07-05 07:13:54

标签: django redirect

我有一个templateview,代码就在这里,如何做到

class MyTemplateView(TemplateView):
    def get_context_data(self, **kwargs):
        context = super(UBaseTemplateView, self).get_context_data(**kwargs)
        # i want to redirect another url in here
        # how to do it

        return context

2 个答案:

答案 0 :(得分:5)

嗯,你会这样:

class MyTemplateView(TemplateView):
    def get(self, request, *args, **kwargs):
        return HttpResponseRedirect('/<your path here>/')

您可以详细了解here,更详细地了解here

如果您想传递帖子数据,那么您只需要这样做:

class MyTemplateView(TemplateView):
    def get_context_data(self, **kwargs):
        return HttpResponseRedirect(reverse('/<your url here>/', [params]))

您也可以使用post功能执行此操作。

class MyTemplateView(TemplateView):
    def post(self, request, *args, **kwargs):
        # do what you want with post data
        # you can get access via request.POST.get()
        return HttpResponseRedirect('/<your url>/')
        # Or use the above example's return statement, if you want to pass along parameters

答案 1 :(得分:0)

更通用的方法是使用here所述的dispatch()。关于调度的更多背景是in the Django docs

优点是,无论在请求中指定了什么HTTP方法(GET,PUT,POST等),这都会起作用,而如果方法是GET则只调用get()函数。