介绍
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 重定向实现页面跳转的方式。开发者可以根据实际需求,选择适合的重定向方式。