首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用login_required重定向时,Django表单内容丢失

在Django中,login_required是一个装饰器,用于限制只有登录用户才能访问特定的视图函数。当用户未登录时,Django会将其重定向到登录页面。然而,有时候在重定向后,原本表单中填写的内容会丢失。这是因为重定向会导致HTTP请求的重新发送,而表单数据只存在于原始请求中。

为了解决这个问题,可以采取以下两种方法:

  1. 使用Django的messages框架:在重定向之前,将表单数据存储在messages框架中,然后在重定向后的视图函数中将其取出并重新填充到表单中。这样可以确保表单数据不会丢失。具体步骤如下:
    • 在表单提交的视图函数中,使用messages模块的add_message方法将表单数据存储在messages框架中,例如:
    • 在表单提交的视图函数中,使用messages模块的add_message方法将表单数据存储在messages框架中,例如:
    • 在重定向后的视图函数中,使用messages模块的get_messages方法获取存储的表单数据,并将其重新填充到表单中,例如:
    • 在重定向后的视图函数中,使用messages模块的get_messages方法获取存储的表单数据,并将其重新填充到表单中,例如:
  • 使用Session存储表单数据:将表单数据存储在用户的Session中,然后在重定向后的视图函数中从Session中取出并重新填充到表单中。具体步骤如下:
    • 在表单提交的视图函数中,将表单数据存储在Session中,例如:
    • 在表单提交的视图函数中,将表单数据存储在Session中,例如:
    • 在重定向后的视图函数中,从Session中获取存储的表单数据,并将其重新填充到表单中,例如:
    • 在重定向后的视图函数中,从Session中获取存储的表单数据,并将其重新填充到表单中,例如:

这样,无论使用哪种方法,都可以在重定向时保留表单数据,确保用户填写的内容不会丢失。

对于Django开发中的其他问题和需求,腾讯云提供了一系列云服务和产品来支持云计算和Web应用的开发、部署和运维。具体推荐的腾讯云产品和产品介绍链接地址可以根据具体需求进行选择和查阅。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于“Python”的核心知识点整理大全58

我们将使用Django提供的表单UserCreationForm, 但编写自己的视图函数和模板 1....视图函数register() 在注册页面首次被请求,视图函数register()需要显示一个空的注册表单,并在用户提交 填写好的注册表单对其进行处理。...用户注册,被要求输入密码两次;由于 表单是有效的,我们知道输入的这两个密码是相同的,因此可以使用其中任何一个。在这里,我 们从表单的POST数据中获取与键'password1'相关联的值。...19.3.1 使用@login_required 限制访问 Django提供了装饰器@login_required,让你能够轻松地实现这样的目标:对于某些页面,只 允许已登录的用户访问它们。...login_required()的代码检查用户是否已登录,仅当用户已登录Django才运行topics() 的代码。如果用户未登录,就重定向到登录页面。

11610

python-Django-URL 路由(二)

Django URL路由的示例 下面是一个简单的Django应用程序的示例,它使用URL路由来处理客户端请求。...login_required from django.contrib.auth.mixins import LoginRequiredMixin from django.urls import reverse_lazy...如果请求方法是POST,视图函数将获取用户提交的文章标题和内容,并创建一个新的Post对象,然后将用户重定向到新创建的文章的详细页面。...如果请求方法是POST,视图函数将获取用户提交的文章标题和内容,并更新现有的Post对象,然后将用户重定向到更新后的文章的详细页面。...这个视图函数使用Django的通用视图类CreateView来处理创建新文章的表单,然后重定向到post_list视图函数,这个视图函数将渲染一个包含所有文章的列表的HTML模板。

82020
  • django 1.8 官方文档翻译:13-1-2 使用Django认证系统

    它们通常表示与你的站点进行交互的用户,并用于启用限制访问、注册用户信息和关联内容给创建者等。...它被Django的admin站点使用,但欢迎你在你自己的代码中使用Django admin 站点使用如下的权限: 查看”add”表单并添加一个只限具有该类型对象的“add”权限的用户对象。...把它设置为 None 来把它从 URL 中移除,当你想把通不过检查的用户重定向到没有next page 的非登录页面。...认证的视图 Django提供一些视图,你可以用来处理登录、登出和密码管理。它们使用stock auth 表单,但你也可以传递你自己的表单Django没有为认证视图提供默认的模板。...class UserCreationForm[source] 用于创建新用户的表单。 模板中的认证数据 当你使用RequestContext,当前登入的用户和它们的权限在模板上下文中可以访问。

    4.6K20

    重新整理django中Auth模块

    0907自我总结 重新整理django中Auth模块 from django.contrib import auth 一.设置 默认Auth表单 auth默认是使用自带的user表单 自定义Auth表单...写法如下: # 引用Django自带的User表,继承使用时需要设置 AUTH_USER_MODEL = "app名.UserInfo" 在modles.py创建表单模型可以对AbstractUser进行继承因为我们可以从源码中看出来...当调用该函数,当前请求的session信息会全部清除。该用户即使没有登录,使用该函数也不会报错。...用法: from django.contrib.auth.decorators import login_required @login_required def my_view(request...若用户没有登录,则会跳转到django默认的 登录URL '/accounts/login/ ' 并传递当前访问url的绝对路径 (登陆成功后,会重定向到该路径)。

    1K10

    Django认证系统并不鸡肋反而很重要

    认证系统概览 认证系统的组成部分如下: 用户 权限 组 密码管理 登录相关表单(前后端分离不需要)和视图(接受Web请求并且返回Web响应) Django框架是MTV模式,类似于MVC模式。...可配置的backend 以上是Django自带内容,如果需要更多功能,可以安装第三方包: 密码增强校验 登录限流 OAuth 对象级权限(django-guardian) 以Article举例,Django...传统方法 使用request.user.is_authenticated判断,然后重定向到登录页面: from django.conf import settings from django.shortcuts...login_required的redirect_field_name参数是指登陆认证成功后重定向的页面,默认保存在叫做next的查询字符串参数中(如/accounts/login/?...如果使用的是class-based views,那么可以使用LoginRequiredMixin,来实现login_required的效果,例如: from django.contrib.auth.mixins

    1.1K10

    【云+社区年度征文】Django认证系统并不鸡肋反而很重要

    认证系统概览 认证系统的组成部分如下: 用户 权限 组 密码管理 登录相关表单(前后端分离不需要)和视图(接受Web请求并且返回Web响应) Django框架是MTV模式,类似于MVC模式。...可配置的backend 以上是Django自带内容,如果需要更多功能,可以安装第三方包: 密码增强校验 登录限流 OAuth 对象级权限(django-guardian) 以Article举例,Django...传统方法 使用request.user.is_authenticated判断,然后重定向到登录页面: from django.conf import settings from django.shortcuts...login_required的redirect_field_name参数是指登陆认证成功后重定向的页面,默认保存在叫做next的查询字符串参数中(如/accounts/login/?...如果使用的是class-based views,那么可以使用LoginRequiredMixin,来实现login_required的效果,例如: from django.contrib.auth.mixins

    1.6K70

    Django 之视图篇

    Http404为Exception子类,所以需要raise使用 HttpResponse详解 方法 init: 使用网页内容实例化HttpResponse对象 write(content): 以文件的方式写...,可以通过修改它来修改访问表单数据使用 GET: 一个类似于字典的对象,包含get请求方式的所有参数 POST: 一个类似于字典的对象,包含post请求方式的所有参数 FILES: 一个类似于字典的对象...属性 QueryDict类型的对象 包含post请求方式的所有参数 与form表单中的控件对应 表单中控件必须有name属性, name为键, value为值 checkbbox存在一键多值的问题 键是开发人员定下来的...方法,按照请求方法对请求进行分发,如果该 方法没有定义,则引发HttpResponseNotAllowed 类属性使用 在类定义直接覆盖 在调用as_view的时候直接昨晚参数使用,例如:urlpatterns...import login_required from django.utils.decorators import method_decorator from django.views.generic

    1.1K87

    使用Django+channels+Python3.7提交Form表单: 400 Bad Request问题

    单说问题表现吧,或许你也可能遇到:通过Ajax发送的post请求,后端可以正常处理,但是通过Form表单提交的POST请求一律400 Bad Request。...但问题是我使用了channels,所以部署的方式就变为了:Daphne + Django ASGI了。...对于http的请求,它使用的是ASGIHandler来处理,依然是继承自Django的core.handlers.base.BaseHandler(WSGIHandler也是继承自它)。...我只能说,谁年轻还不写几个糟糕的代码呢。....-| ) 终极原因 上面说了一大堆内容,终极的原因其实是我用了一个老的twisted包(18.4.0),最新的是18.7.0。 总结 宽泛的异常捕获,并且不做任何输出,简直就是大坑。

    2K20

    Django全局启用登陆验证login_required的方法

    Django在做后台系统过程中,我们通常都会为view函数添加 @login_required 装饰器,这个装饰器的主要作用就是在用户访问这个方法,检查用户是否已经成功登陆,如果没有则重定向到登陆页面...也接收参数 login_url 来指定登陆页面 from django.contrib.auth.decorators import login_required @login_required(login_url...提供了更强的灵活性,在这个列表里的url都不会验证是否登陆,默认将 login_url 添加到了 open_urls 列表中 __call__ 函数会判断当用户没有登陆且请求的URL不在 open_urls 列表中,...- views.py - webapp - __init__.py - settings.py - urls.py - manage.py 当我们有需要排除,不用检查是否登陆的URL,...总结 到此这篇关于Django全局启用登陆验证login_required的方法的文章就介绍到这了,更多相关django登陆验证login_required内容请搜索ZaLou.Cn

    2.8K40

    django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单

    使用基于类的视图处理表单 表单的处理通常有3 个步骤: 初始的的GET (空白或预填充的表单) 带有非法数据的POST(通常重新显示表单和错误信息) 带有合法数据的POST(处理数据并重定向) 你自己实现这些功能经常导致许多重复的样本代码...(参见在视图中使用表单)。...form_valid()的默认实现只是简单地重定向到success_url。 模型的表单 通用视图在于模型一起工作时会真正光芒四射。...注 当指定一个自定义的表单,你必须指定模型,即使form_class 可能是一个ModelForm。...login_required() 来装饰这个视图,或者在form_valid() 中处理未认证的用户。

    1.8K20

    Django 用户认证系统使用总结

    Django用户认证系统使用总结 测试环境 Win7 Django 1.11 使用Django认证系统 本文按默认配置讲解Django认证系统的用法。...login_required装饰器 login_required(redirect_field_name='next', login_url=None) 作为快捷方式,可以使用login_required...login_required() 做以下事情: 如果用户未登录,重定向到settings.LOGIN_URL变量指定的url,并把当前请求的绝对URL赋值给查询字符串。...对应的,html模板中也要使用对应参数名称。 login_required()还携带了可选参数 login_url。...RequestContext,并且开启了'django.contrib.auth.context_processors.auth'上下文处理器(可在settings.py中配置),当前已登录用户和他们的权限都被存储为变量

    1.8K10

    使用django-allauth管理用户登录与注册

    ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE (=True) 用户注册是否需要用户输入两遍密码 ACCOUNT_USERNAME_BLACKLIST (=[]) 用户不能使用的用户名列表...import render, redirect from django.contrib.auth.decorators import login_required from django.contrib...(): form.save() # 添加一条信息,表单验证成功就重定向到个人信息页面 messages.add_message(request...使用 Baidu 登录 使用 Baidu 作为第三方登录,关联成功后,还需要设置邮箱和用户名 登录成功 美化表单 django-allauth 自带的模板是没有经过美化的,另外涉及到邮箱验证和各种消息也是固定的...bootstrap 美化表单,修改 base.html 使用 bootstrap 美化表单, 需要确认是否安装了 django-crispy-forms # templates/account/base.html

    6.8K30

    Django | allauth】useprofile 用户模型扩展

    图片 ‍♂️ 个人主页: @计算机魔术师 ‍ 作者简介:CSDN内容合伙人,全栈领域优质创作者。...python manage.py migrate python manage.py runserver 注册成功 图片二、 建立表单在应用下建立文件forms.py,并重写表单,由于注册表单,只会自定创建...user对象,并没有创建userprofile并自动与扩展模型userprofile 进行关联,所以需要重写注册表单,并修改默认注册表单配置,注册两个对象一起被创建,并存储到数据库中。...有两种方法实现 1)自定义表单类 (这里的需求是需要附加输入,建议使用这种方法) 注意!!!...import login_required from django.shortcuts import render, redirect, get_object_or_404,HttpResponseRedirect

    1.1K10

    Python开发网站的完整指南

    上面的代码定义了一个视图函数index,当用户访问该视图,会返回一条简单的“Hello, world!”消息。 使用Django框架,我们可以轻松地建立数据库和表。...二、模板引擎 Web应用程序通常需要渲染动态内容。为此,我们可以使用模板引擎。Python提供了许多模板引擎,包括Django模板、Jinja2和Mako等。... }} {% endfor %} 使用上述语法,我们可以轻松地渲染动态内容,并在Web应用程序中提供交互式用户界面。...以下是一个使用Django身份验证系统的示例: from django.contrib.auth.decorators import login_required @login_required def...如果用户未登录,Django会将其重定向到登录页面。当登录成功后,用户将重定向回原始profile视图,并将包含用户身份信息的上下文传递到模板。

    98420

    Python 项目实践三(Web应用程序)第五篇

    为此,我们将使用Django提供的默认登录视图,因此URL模式会稍有不同。...1 使用@login_required 限制访问 Django提供了装饰器@login_required,让你能够轻松地实现这样的目标:对于某些页面,只允许已登录的用户访问它们。...--snip-- from django.core.urlresolvers import reverse from django.contrib.auth.decorators import login_required...login_required()的代码检查用户是否已登录,仅当用户已登录Django才运行topics()的代码。如果用户未登录,就重定向到登录页面。...4 确定当前有哪些用户 我们迁移数据库Django将对数据库进行修改,使其能够存储主题和用户之间的关联,下面来查看已创建的所有用户的ID。

    1.3K80
    领券