使用django-registration和auth,我该如何在登录时设置会话变量?

9
我正在使用django-registration将用户登录到我的应用程序中。这部分工作正常。我无法弄清楚的部分是如何在用户登录时设置自定义会话变量。例如,我想填充包含UserProfile数据以及其他几个函数输出的变量。然后,我就可以在后续的视图/模板中使用该信息。
如果有人能指向在线教程或发布一些示例代码,那就太好了。
我正在使用django 1.1和Python 2.6。
2个回答

4

我现在只是想寻找额外的会话数据。我已经在数据库中拥有所有信息,只需要弄清楚如何访问它。我猜我的真正问题是,在使用django-registration时,我如何设置这些会话数据?这是可能的吗?还是我应该编写自己的函数来登录用户? - doza
1
您不需要将个人资料数据存入会话中。在使用django.contrib.auth时,您可以通过request.user访问当前用户。 - stefanw
当然!我没有那样想过。那样更有意义。谢谢! - doza

2

我知道@stefanw提供了一种替代方案,但为了回答原问题:

在登录时设置会话数据是困难的,因为设置数据最容易的地方是在你的视图函数中,而你想要修改的特定视图函数是contrib.django.auth应用程序的一部分。

因此,你的选项如下:

  • 创建一个小型的中间件类来设置你的会话数据。
  • 创建一个模板标签或其他的代码片段,可以集成到登录模板或后续页面中,以设置你想要的数据。
  • 编写你自己的自定义登录视图函数(实际上非常简单)。

祝django-ing愉快!


另一个选择是使用登录信号:https://docs.djangoproject.com/en/dev/topics/auth/#login-and-logout-signals。但正如上面提到的,在您的情况下,使用request.user比使用会话更好。 - Roar Skullestad
2
请返回正确的链接:https://docs.djangoproject.com/en/1.11/ref/contrib/auth/#module-django.contrib.auth.signals - cgl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接