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

在基于类的视图的form_valid()中设置时,Django会话变量会丢失

在基于类的视图的form_valid()方法中设置时,Django会话变量会丢失。这是因为在基于类的视图中,form_valid()方法是在表单验证成功后被调用的,而在这个过程中,Django会话变量并没有被保存。

要解决这个问题,可以通过重写form_valid()方法来手动保存会话变量。可以使用Django提供的session对象来保存和获取会话变量。以下是一个示例:

代码语言:txt
复制
from django.contrib import messages
from django.views.generic.edit import FormView

class MyFormView(FormView):
    form_class = MyForm
    template_name = 'my_template.html'
    success_url = '/success/'

    def form_valid(self, form):
        # 保存会话变量
        self.request.session['my_variable'] = 'my_value'

        # 执行其他操作

        # 调用父类的form_valid()方法
        return super().form_valid(form)

在上面的示例中,我们在form_valid()方法中使用self.request.session来保存会话变量。在这个例子中,我们将会话变量设置为'my_value'。你可以根据自己的需求设置不同的会话变量。

另外,如果你需要在其他视图或模板中访问这个会话变量,可以使用相同的方式来获取它:

代码语言:txt
复制
my_variable = request.session.get('my_variable')

这样,你就可以在基于类的视图中设置会话变量,并在其他地方访问它了。

推荐的腾讯云相关产品:云服务器(CVM)、云数据库MySQL版、云存储(COS)。

  • 云服务器(CVM):提供弹性计算能力,可根据业务需求灵活调整配置,支持多种操作系统和应用场景。了解更多:云服务器(CVM)产品介绍
  • 云数据库MySQL版:提供高性能、可扩展的MySQL数据库服务,支持自动备份、容灾、监控等功能,适用于各种规模的应用。了解更多:云数据库MySQL版产品介绍
  • 云存储(COS):提供安全可靠的对象存储服务,适用于存储和管理各种类型的数据,支持高并发访问和低延迟读写。了解更多:云存储(COS)产品介绍
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

使用基于视图处理表单 表单处理通常有3 个步骤: 初始GET (空白或预填充表单) 带有非法数据POST(通常重新显示表单和错误信息) 带有合法数据POST(处理数据并重定向) 你自己实现这些功能经常导致许多重复样本代码...为了避免这点,Django 提供一系列通用基于视图用于表单处理。...注意这里我们是如何配置通用基于视图;我们自己没有写任何逻辑: #views.py from django.views.generic.edit import CreateView, UpdateView...如果你希望分开CreateView 和UpdateView 模板,你可以设置视图template_name 或template_name_suffix。...(form) 注意,你需要使用login_required() 来装饰这个视图,或者form_valid() 处理未认证用户。

1.8K20

djangoModelForm多表单组合解决方案

通用视图使用时,只需要承继后,再设置model或者form_class即可。...View是所有视图,根据方法名分发请求到具体get或者post等方法,提供as_view方法。...注意,它会在post请求判断表单是否可用,is_valid为真,会调用form_valid方法,因此,重写form_valid方法是第4部分处理多model到一个form关键。...所以,在用CreateView、一个模型、一个模板实现添加一行记录功能是多么简单,因为这些父自动生成object,渲染到模板,解析form表单,save到数据库。...那么,从第1部分我介绍Form里prefix,以及第3部分里图中ProcessFormView允许重定义form_valid,以及第2部分ModelFormsave方法行为控制,解决方案已经一目了然了

3.3K20

Django内置通用视图及实例

显示表单视图,验证错误时,重新显示表单并显示错误信息;成功,重定向到一个新URL....方法: get_success_url():决定在表单成功验证后重定向到URL,默认返回success_url. form_valid(form):表单验证成功后调用该方法(注意并没有对数据进行操作...显示用于编辑现有对象表单视图,重新显示具有验证错误信息视图,并且保存对象.这里使用从对象模型自动生成表单(除非手动制定表单)....显示确认页面并删除现有对象视图.仅当请求方法为POST,才会删除给定内容.如果此视图是通过GET提取,它将显示一个确认页面,其中包含POST到同一网址表单....根据报错提示,我们可以直接在视图下给success_url参数赋值,或在模型中去定义get_absolute_url()方法,去设置成功后跳转url。

2.9K40

Django内置通用视图CBV及示例

显示表单视图,验证错误时,重新显示表单并显示错误信息;成功,重定向到一个新URL....方法: get_success_url():决定在表单成功验证后重定向到URL,默认返回success_url. form_valid(form):表单验证成功后调用该方法(注意并没有对数据进行操作...显示用于编辑现有对象表单视图,重新显示具有验证错误信息视图,并且保存对象.这里使用从对象模型自动生成表单(除非手动制定表单)....显示确认页面并删除现有对象视图.仅当请求方法为POST,才会删除给定内容.如果此视图是通过GET提取,它将显示一个确认页面,其中包含POST到同一网址表单....根据报错提示,我们可以直接在视图下给success_url参数赋值,或在模型中去定义get_absolute_url()方法,去设置成功后跳转url。

3.2K10

django嵌套try-except实例

orm列表扁平化,列表交集,批量删除 补充知识:Django 异常捕获中进行数据库保存,保存后将异常再抛出 需求: 当我检查配额,如果配额不足,我需要将订单状态改为5,然后再将原有异常抛出 一:...默认开启了事务,因此我保存订单状态后,再抛异常没有任何问题 但当我查询数据库订单状态,发现异常抛出之前订单改变状态已经丢失 二:优化,使用装饰器,手动关闭事务 # dispatch方法上增加装饰器...,如果在视图其他地方需要用到事务一致性,则显然不合理 二:优化,定义事务保存点,局部控制事务一致性 class xxxxxxxx(): def form_valid(self, form):...a.save():此处保存了数据 sid = transaction.savepoint():设置保存点 b.save():此处再次保存了数据 接下来就是逻辑处理:如果满足xxxxxxxx条件,则手动提交...所以我们可以通过调整保存点位置,实现我们需求。 以上这篇django嵌套try-except实例就是小编分享给大家全部内容了,希望能给大家一个参考。

2.1K10

django 1.8 官方文档翻译: 13-9-1 如何使用会话

虽然这很方便,但是某些架构存储会话在其它地方更快,所以可以配置Django 来存储会话到你文件系统上或缓存。...如果保存Cookie客户端(例如你浏览器)不能保存所有的会话Cookie或丢失数据,会话同样变得不合法。...视图中使用会话 当SessionMiddleware 激活,每个HttpRequest 对象 —— 传递给Django 视图函数第一个参数 —— 将具有一个session 属性,它是一个字典对象...例子 下面这个简单视图一个用户提交一个评论后设置has_commented 变量为True。...当设置为TrueDjango 将对每个请求保存会话到数据库。 注意会话Cookie 只有一个会话被创建或修改后才会发送。

1.1K20

python-Django-URL 路由(二)

Django URL路由示例 下面是一个简单Django应用程序示例,它使用URL路由来处理客户端请求。...在这个示例,我们将这些视图函数定义名为views.py文件:: from django.shortcuts import render, get_object_or_404, redirect...(form) post_list = PostList.as_view() 在这个示例,我们定义了四个视图函数。...视图函数获取文章slug,并使用get_object_or_404函数从数据库获取文章对象。然后,视图函数将文章对象传递给包含文章详细信息HTML模板。...这个视图函数使用Django通用视图CreateView来处理创建新文章表单,然后重定向到post_list视图函数,这个视图函数将渲染一个包含所有文章列表HTML模板。

80620

Django 状态保持3.5

Cookie del request.session['member_id']:删除会话 用户登录示例 操作效果如下图: views.py文件创建视图 from django.shortcuts.../时间过期 如果value为0,那么用户会话Cookie将在用户浏览器关闭过期 如果value为None,那么会话永不过期 修改视图中login_handle函数,查看效果 def login_handle...,可以使用settings.pySESSION_ENGINE项指定 基于数据库会话:这是django默认会话存储方式,需要添加django.contrib.sessions到INSTALLED_APPS...设置,运行manage.py migrate在数据库安装会话表,可显示指定为 SESSION_ENGINE='django.contrib.sessions.backends.db' 基于缓存会话...:只存在本地内在,如果丢失则不能找回,比数据库方式读写更快 SESSION_ENGINE='django.contrib.sessions.backends.cache' 可以将缓存和数据库同时使用

65730

Django视图

Request对象 Request介绍 服务器接收到http协议请求后,根据报文创建HttpResponse对象 视图函数第一个参数是HttpResponse对象 django.http 模块定义了...一个标准Python字典,包含所有的cookie,键和值都为字符串 session: 一个即可读又可写类似于字典对象,表示当前会话, 只有当Django启用会话支持才可用 详细内容见"状态保持...) 系统引发Http404触发 默认传递request_path变量给模板,即导致错误URL DEBUG=True则不会调用404, 取而代之是调试信息 404视图会被传递一个RequestContext...(request, template_name='400.html') - DEBUG=False 基于视图 简单说一下基于视图基于函数视图优势和区别: HTTP方法methode...,该方法创建一个实例并调用dispatch方法,按照请求方法对请求进行分发,如果该 方法没有定义,则引发HttpResponseNotAllowed 类属性使用 定义直接覆盖 调用as_view

1.1K87

django-web开发框架-状态保持session

Cookie del request.session[‘member_id’]:删除会话 用户登录示例 操作效果如下图: views.py文件创建视图 from django.shortcuts...0,那么用户会话Cookie将在用户浏览器关闭过期 如果value为None,那么会话永不过期 修改视图中login_handle函数,查看效果 def login_handle(request)...type=3 存储session 使用存储会话方式,可以使用settings.pySESSION_ENGINE项指定 基于数据库会话:这是django默认会话存储方式,需要添加django.contrib.sessions...到INSTALLED_APPS设置,运行manage.py migrate在数据库安装会话表,可显示指定为 SESSION_ENGINE='django.contrib.sessions.backends.db...' 基于缓存会话:只存在本地内在,如果丢失则不能找回,比数据库方式读写更快 SESSION_ENGINE='django.contrib.sessions.backends.cache' 可以将缓存和数据库同时使用

75610

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

django.contrib.auth在你INSTALLED_APPS设置列出,它将确保为你安装应用每个Django模型创建3个默认权限 – add、change和delete。...login()使用Django会话框架保存用户ID会话。 注意任何在匿名会话设置数据都会在用户登入后会话中都会记住。...对普通视图使用权限 若要对一个基于普通视图使用权限,可以该类上装饰View.dispatch方法。详细细节参见Decorating the class。...startproject生成,它会被包含进来。 Django 2.0会话验证变成强制性, 无论是否开启了SessionAuthenticationMiddleware 。...如果你升级一个现存站点,并且希望开启这一间件,而不希望你所有用户之后重新登录,你可以首先升级到DJango1.7并且运行它一段时间,以便所有会话在用户登录自然被创建,它们包含上面描述会话哈希

4.6K20

37.Django1.11.6文档

虽然基于视图最小实现不需要任何类属性来完成它功能,但是许多基于设计类属性非常重要,有两种方式来设置类属性。 第一种方式是Python 标准方式,子类化并在子类覆盖属性和方法。...也变量部分中出现,不过它有特殊含义,我们将在后面说明。 重要变量名称不能有空格或标点符号。...inlines定义实例,或者添加相关对象可能遇到“错误请求”错误。...虽然这很方便,但是某些架构存储会话在其它地方更快,所以可以配置Django 来存储会话到你文件系统上或缓存。...当设置为TrueDjango 将对每个请求保存会话到数据库。 注意会话Cookie 只有一个会话被创建或修改后才会发送。

24.2K80

Python全栈开发之Django基础

自动设置该字段为当前时间,用于最后一次修改时间戳,默认为False,auto_now_add表示当对象第一次创建自动设置当前时间,用于创建时间戳,默认为False TimeField: 时间字段...,表示当前会话,只有当Django 启用会话支持才可用 HttpResponse对象 属性 content:表示返回内容。...='django.contrib.sessions.backends.db' 存储缓存:存储本机内存,如果丢失则不能找回,比数据库方式读写更快 SESSION_ENGINE='django.contrib.sessions.backends.cache...使用Session后,会在Cookie存储一个sessionid数据,每次请求浏览器都会将这个数据发给服务器,服务器接收到sessionid后,根据这个值找出这个请求者Session 对象及方法...value为0,那么用户会话Cookie将在用户浏览器关闭过期,如果value为None,那么会话永不过期 No.5 模板 负责封装构造要返回html 模板语言 变量 语法:{{变量}} 解析顺序

3.7K20

django

或timedelta对象,会话将在这个指定日期/时间过期,注意datetime和timedelta值只有使用PickleSeriallizer才可序列化 - max_age...- COOKIES: 一个标准Python字典,包含所有的cookie,键和值都为字符串 - SESSION: 一个既可读又可写类似于字典对象,表示当前会话,只有当Django启用会话支持才可用...- 对应表 - 属性对应表字段 - 应用model.py文件定义class - 所有需要使用ORMclass都必须是 model.Model...中进行设置: TEAMPLATES - teampltaes文件夹下编写模板并调用 - 模板-变量 - 变量表示方法{{var_name}} - 系统调用模板时候,会用相应数据查找相应变量名称...import Paginator ## 基于视图 - 可以针对HTTP协议不同方法创建不同函数 - 可以使用Mixin等oop技术 - Mixin - 把来自父行为或者属性组合在一起

1.6K10
领券