当前位置: 首页 > 面试题库 >

从基于类的通用视图获取request.session

杜辉
2023-03-14
问题内容

有没有办法request.session从基于类的视图中获取信息?

例如,我有

from django.views.generic.edit import FormView

class CreateProfileView(FormView):
    def form_valid(self, form):
        # --> would like to save form contents to session here

        return redirect(self.get_success_url())

我唯一能想到的就是as_view添加

def as_view(self, request, *args, **kwargs):
    self.session = request.session
    super(CreateProfileView, self).as_view(request, *args, **kwargs)

上课。但这看起来很丑。还有另一种方法吗?


问题答案:

你可以self.request从班级中的任何地方访问(因此self.request.session

https://docs.djangoproject.com/en/dev/topics/class-based-views/generic-display/#dynamic-filtering

进行这项工作的关键部分是,当调用基于类的视图时,各种有用的东西都存储在自己身上。以及请求(self.request),其中包括根据URLconf捕获的位置(self.args)和基于名称的(self.kwargs)参数。



 类似资料:
  • 问题内容: 我希望该帖子确实被csrf停止了,但是它返回403错误。 但是,如果删除该装饰器并在URLConf中执行此操作 它会工作。 这里发生了什么?它不应该工作,因为我猜那是method_decorator所做的。我正在使用python3.4和django1.7.1 任何建议都很好。 问题答案: 你需要装饰工作方法。它所做的是将视图函数本身的属性设置为,然后中间件在(最外面的)视图函数中对此进

  • 前言 欢迎来到系列教程的第六部分!在这篇教程中,我们将详细探讨基于类的视图(简称CBV)。我们也将重构一些现有的视图,以便利用内置的基于类的通用视图(Generic Class-Based Views)。 这篇教程我们还将讨论许多其他主题,例如如何使用分页,如何使用markdown以及如何添加简单的编辑器。我们还将探索一个名为 Humanize 的内置软件包,用于对数据进行“人为操作”。 好了,伙

  • 问题内容: 我正在使用基于类的通用视图,有人可以建议我如何设置初始值以更新表单吗? 我尝试使用get_initial()方法,但未成功。以下是我尝试的代码 问题答案: 您应该定义一个方法,该方法返回包含初始值的字典: 另外,您可以定义一个值:

  • 问题内容: 我的课开始于 现在,我想在代码中的某处编写代码,但这是不可能的(就像还是现在)。 您能告诉我如何获得通用药吗? 问题答案: 您可以动态提供类型,但是编译器不会自动为您提供该类型。 顺便说一句:动态地获取它并非不可能,但这取决于如何使用它。例如 可以确定Arnie.class具有带有MuscleHero的Generic参数的超类。 在这种情况下,超类的通用参数就是这样。

  • 问题内容: 说我有一个像这样的父接口/类 还有许多实现通用类型的实现接口。 我可以使用反射来获取的情况下代表我有没有为对象。像这样: 目前,我已经作为参数传递了,但是如果可以的话,我想简化一些事情。 问题答案: 是的,尽管什么其他人说,这个信息 是 可用的,如果你有机会到子类对象。您需要与一起使用。 在您的示例中,“实际”类型参数应返回for 。

  • 问题内容: 主视图是一个简单的分页ListView,我想向其中添加搜索表单。 我认为这样可以解决问题: 但是显然我错了..我在官方文档中找不到该怎么做的方法。 建议? 问题答案: 这些答案对引导我朝正确的方向大有帮助。谢谢大家 对于我的实现,我需要一个窗体视图,该窗体视图同时在get和post上返回ListView。我不喜欢重复get函数的内容,但需要进行一些更改。现在,self.form也可以从