Django登录后自定义跳转页面的实现方法

橘子海
橘子海
发布时间:2026-10-13| 5人浏览过
原创

本文介绍Django框架中登录后默认跳转至/account/profile的修改方法。通过配置setting文件中的LOGIN_REDIRECT_URL可快速指定目标页面。此外,详细解析了利用HTTP_REFERER和Session机制实现登录/注销后返回原页面的完整代码示例,包括GET请求记录来源、POST请求重定向及带提示的跳转页面实现。

修改登录默认跳转路径

Django auth 登录成功后默认跳转至 /account/profile,现需修改为跳转至其他指定页面。

近期在学习 Django,其内置的 auth 模块功能强大,基本能够满足用户注册、登录和登出的需求。对于简单的用户管理系统,使用 Django auth 已足够。当然,这需要自行编写登录页面的模板,不过实现起来并不复杂。在实际尝试中发现一个问题:验证登录成功后,页面会自动跳转到 /account/profile。如果不想跳转到该页面,该如何修改呢?

查阅了大量网页资料后,发现官方文档最为可靠。解决方法非常简单,只需在项目的 setting 配置文件中添加一行代码即可解决。

setting 配置示例


LOGIN_REDIRECT_URL = ‘/index'

此处示例指定登录成功后跳转至 index 页面,读者可根据实际需求修改目标路径。配置完成后即可生效,随后可继续处理其他问题。

========================================================================================================================================================

登录与注销的重定向实现

Django 中实现页面跳转和重定向的常见方法:

跳转和重定向的一个典型应用场景是用户登录或注销后返回到之前的页面。以下提供登录和注销的具体实现示例。

例如,用户正在浏览一篇文章,发现下载附件需要登录权限。点击登录链接进入登录页面,输入用户名和密码成功登录后,系统应自动返回到刚才浏览的文章页面。(目前许多网站采用 Ajax 弹出对话框进行登录,用户体验更佳。)

具体如何实现?下面介绍 Django 的实现方式,但大多数 Web 框架均可采用类似逻辑。

注销操作的实现:

由于注销通常不需要独立的注销页面,实现相对简单。利用 HTTP_REFERER 变量,Django 的注销视图代码如下:

注销返回原页面代码


def logout_user(request):
 logout(request)
 return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))

登录操作的实现:

登录操作相对复杂,因为通常设有独立的登录页面。如果登录成功后直接获取 HTTP_REFERER,得到的将是登录页面自身的 URL,而非用户之前浏览的页面。

可以利用 Django 的 Session 机制解决此问题。在用户进入登录页面(GET 请求)时,将来源 URL 记录在 Session 中;当用户提交表单进行登录(POST 请求)时,从 Session 中取出该 URL 进行重定向。具体代码如下:

登录记录来源与重定向代码


def login_user(request):
 if request.method == 'GET':
  #记住来源的url,如果没有则设置为首页('/')
  request.session['login_from'] = request.META.get('HTTP_REFERER', '/')
  #TODO:显示登陆页面,blablabla
 elif request.method == 'POST':
  #TODO: 用户登录操作,blablabla
  #重定向到来源的url
  return HttpResponseRedirect(request.session['login_from'])

最后,有时需要让用户感知到被重定向的过程,可以编写一个简单的提示页面,告知用户两秒后自动跳转,并相应调整登录视图代码:

带提示的跳转页面代码


<p>两秒钟后转入如下链接,如果长时间没有响应请直接点击:</p>
<p><a href="{{ refresh_url }}" rel="external nofollow" >{{ refresh_url }}</a></p>
<meta http-equiv="refresh" content="2;url={{ refresh_url }}">

总结

以上介绍了 Django 框架中登录后自定义跳转页面的实现方法,希望对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持! 如果您觉得本文对您有帮助,欢迎转载,请注明出处,谢谢!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。