详解Django的 redirect() 函数:重定向到指定的 URL

  • Post category:Python

redirect()是Django中的一个视图函数(在django.shortcuts中),用于重定向到指定的URL。

其语法如下:

redirect(to, permanent=False, *args, **kwargs)

其中参数说明如下:

  • to:表示需要重定向的目标URL
  • permanent:为True时表示使用HTTP 301重定向,为False时表示使用HTTP 302重定向。
  • *args**kwargs:传递给URL反向解析器的参数,用于动态生成目标URL。

使用时,我们需要首先将该模块引入:

from django.shortcuts import redirect

然后在视图函数中使用该函数,实现重定向。

例如:

from django.shortcuts import redirect

def my_view(request):
    # 重定向到百度首页
    return redirect('https://www.baidu.com/')

还可以和URL反向解析器组合使用,以保证生成的URL始终是正确的(比如在URL结构调整时):

from django.shortcuts import redirect, reverse

def my_view(request):
    # 重定向到名为'some_view'的相对URL
    return redirect(reverse('some_view'))

下面提供两个实例。

实例一

假设我们有一个Django网站,当用户成功注册新账户时,我们需要让他自动跳转到登录页面。

那么首先,在注册成功后,我们需要重定向至登录页面。

from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm

def user_registration(request):
    if request.method == 'POST':
        # 处理提交数据
        form = UserCreationForm(request.POST)
        if form.is_valid():
            # 注册成功,重定向至登录页面
            return redirect('login')
    else:
        # 渲染注册界面
        form = UserCreationForm()
    return render(request, 'user_registration.html', {'form': form})

这里我们使用了redirect()重定向函数,实现在用户成功提交注册信息后,跳转至登录页面的功能。

实例二

假设我们有一个全局的顶部导航栏,其中有一个链接直接跳转到管理后台。

在实现这个链接时,我们可以在视图函数中,使用redirect()函数,实现自动跳转到管理界面的功能。

from django.shortcuts import redirect

def admin_page(request):
    # 重定向到管理后台页面
    return redirect('/admin/')

这里我们直接将/admin/作为了目标URL,实现了自动跳转到管理后台的功能。