介绍
Django是一个由MTV(Model模型层、Template模板层、View视图层)框架组成的Python WEB框架,具有高效且开发效率高等特点。
在web应用程序中,跳转到不同的页面是经常性要处理的需求,例如表单提交成功后跳转到显示成功信息的页面。Django提供了很多种的跳转方式,并且可以根据不同的需求选择不同的跳转方式。
正文
一、HttpResponseRedirect
在django.http模块中定义了HttpResponseRedirect类,它表示HTTP重定向。
from django.http import HttpResponseRedirect
def redirect(request):
return HttpResponseRedirect('/index/')
以上代码实现了将页面重定向到/index/路径下。
另外,对于/url/形式的地址,也可以使用绝对地址重定向:
from django.http import HttpResponseRedirect
from django.urls import reverse
def redirect(request):
return HttpResponseRedirect(reverse('index'))
该函数利用reverse反向解析url,重定向到index视图函数中对应的url。
二、redirect函数
除了HttpResponseRedirect类,Django还提供了redirect函数。
from django.shortcuts import redirect
def redirect(request):
return redirect('/index/')
与HttpResponseRedirect类似,这里的redirect函数也可以使用reverse反向解析url,实现重定向:
from django.shortcuts import redirect
from django.urls import reverse
def redirect(request):
return redirect(reverse('index'))
这种方式的好处在于,如果url发生改变,仅需要更改urls.py中的定义,而不需要修改各个视图函数中的重定向地址。
三、HttpResponsePermanentRedirect
HttpResponsePermanentRedirect也是一个HTTP重定向类,和HttpResponseRedirect的区别在于状态码不同,HttpResponsePermanentRedirect使用301状态码表示永久移动。
from django.http import HttpResponsePermanentRedirect
def redirect(request):
return HttpResponsePermanentRedirect('/index/')
以上代码实现了在浏览器永久重定向到/index/路径下。
总结
本文从HttpResponseRedirect、redirect函数以及HttpResponsePermanentRedirect三个角度,详细阐述了利用Django重定向实现页面跳转的方式。开发者可以根据实际需求,选择适合的重定向方式。