redirect()函数返回一个HttpResponseRedirect对象,这个对象代表一个重定向的URL,其函数接口说明如下:
redirect
(to
[
, permanent
=
False
]
, *args
, **kwargs
)
其中permanent代表这个重定向是临时的还是永久的,默认值为False,表示是一个临时的重定向。其他的参数可以是:
1.一个模型类:将调用这个模型类的 get_absolute_url() 方法得到URL后进行重定向;
2.一个视图函数的名称,及其相应的参数:将调用视图函数的urlresolvers.reverse()方法来得到URL并进行重定向;
3.一个URL对象:用来进行重定向。
下面举几个例子:
1.首先,可以给redirect方法传递一个模型对象作为参数,它会调用这个模型对象的get_absolute_url()来得到URL进行重定向:
def my_view
(request
):
...
object = MyModel. objects. get (... )
return redirect ( object )
...
object = MyModel. objects. get (... )
return redirect ( object )
2.其次,可以给redirect方法传递一个视图函数名称作为参数,来进行URL重定向,同时还可以给这个视图函数传递参数:
def my_view
(request
):
...
return redirect (’some-view-name’ , foo =’bar’ )
...
return redirect (’some-view-name’ , foo =’bar’ )
3.最后,我们还可以给redirect函数传递一个实际的URL路径(完整路径或者相对路径):
#相对路径
def my_view (request ):
...
return redirect (’/some/url/’ )
#完整路径:
def my_view (request ):
...
return redirect (’http://www. onepub. net/’ )
def my_view (request ):
...
return redirect (’/some/url/’ )
#完整路径:
def my_view (request ):
...
return redirect (’http://www. onepub. net/’ )
4.缺省情况下permanent=False,表示是一个临时的重定向,我们可以把这个参数设置为True,让其变成一个永久的重定向:
def my_view
(request
):
...
object = MyModel. objects. get (... )
return redirect ( object , permanent = True )
...
object = MyModel. objects. get (... )
return redirect ( object , permanent = True )