在基于类的视图的form_valid()方法中设置时,Django会话变量会丢失。这是因为在基于类的视图中,form_valid()方法是在表单验证成功后被调用的,而在这个过程中,Django会话变量并没有被保存。
要解决这个问题,可以通过重写form_valid()方法来手动保存会话变量。可以使用Django提供的session对象来保存和获取会话变量。以下是一个示例:
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'。你可以根据自己的需求设置不同的会话变量。
另外,如果你需要在其他视图或模板中访问这个会话变量,可以使用相同的方式来获取它:
my_variable = request.session.get('my_variable')
这样,你就可以在基于类的视图中设置会话变量,并在其他地方访问它了。
推荐的腾讯云相关产品:云服务器(CVM)、云数据库MySQL版、云存储(COS)。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云