2010-02-15 38 views
7

我正在使用django-registration將用戶登錄到我的應用程序中。這部分工作正常。我弄不懂的部分是如何在用戶登錄時設置自定義會話變量。例如,我想填充包含UserProfile數據的變量以及一些其他函數的輸出。然後我可以在隨後的視圖/模板中使用這些信息。如何使用django-registration和auth在登錄時設置會話變量?

如果任何人都可以在線指導我的教程或發佈一些示例代碼,那就太棒了。

我使用Django 1.1和Python 2.6

回答

3

如果您不希望用戶數據(只是附加的會話數據)的持久存儲看看:

http://docs.djangoproject.com/en/dev/topics/http/sessions/

的會議如果您使用django.contrib.auth,框架很可能已經啓用。

如果你想要更多的用戶數據(不僅是在一個會話,但在數據庫中),您將它們保存在另一個「曲線」模型持久性存儲:

http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

+0

我只是尋找額外的會議數據在這一點上。我已經擁有了數據庫中的所有信息,只需要弄清楚如何實現它。 我想我真正的問題是如何設置這個會話數據,而使用django註冊?是否有可能或應該編寫我自己的功能來登錄用戶? – doza

+0

您不需要將配置文件數據導入會話。使用django.contrib.auth時,您可以使用request.user訪問當前用戶。 – stefanw

+0

當然!我沒有這樣想過。這更有意義。 謝謝! – doza

1

我意識到@stefanw爲您提供了一個替代解決方案,但要回答原始問題:

在登錄時設置會話數據很困難,因爲設置數據最簡單的地方在您的視圖函數中,而您想要修改的特定視圖函數是contrib.django.auth應用程序的一部分。

所以,你的選擇會是以下幾點:

  • 創建一個小的中間件類設置你的會話數據。
  • 創建一個模板標籤或其他一些代碼,可以集成到登錄模板或後續頁面中,以設置您想要的數據。
  • 編寫您自己的自定義登錄視圖功能(實際上它非常簡單)。

快樂的django-ing!

+0

另一種選擇是使用登錄信號:https://docs.djangoproject.com/en/dev/topics/auth/#login-and-logout-signals。但如上所述,在你的情況下使用request.user是比使用會話更好的選擇。 –

+0

正確的鏈接:https://docs.djangoproject.com/en/1.11/ref/contrib/auth/#module-django.contrib.auth.signals – cgl

相關問題