2013-02-25 160 views
2

我正在Django網站上創建文章。我希望人們能夠創建一篇文章作爲註冊過程的一部分。下面是步驟:Django身份驗證:用戶在註冊前創建對象

  1. 用戶點擊「創建文章」未經註冊或登錄
  2. 用戶被定向到「創建文章」頁面顯示的形式創建的文章。
  3. 點擊「創建文章」表單上的「提交」按鈕後,用戶被重定向到註冊/登錄頁面。
  4. 註冊過程或登錄後,文章將保存在用戶的ID下。

我很新的Django的,所以這裏有併發症,到目前爲止我而言:

  • 難道我有AnonymousUser保存對象作爲作者,直到登錄過程後?我如何再次找到對象,以便在用戶登錄或註冊後將其保存到用戶? AnonymousUser對象中是否有任何唯一標識符?

  • 我應該通過註冊過程使用URL傳遞對象,直到註冊發生(然後保存它)?如何做到這一點?

回答

2

有幾種方法可以做你想做的事情。我會從創建的文章表單中排除用戶,並將用戶設置爲blank = True,null = True。

這真的取決於您是否在會話中保留文章,直到您創建用戶或將其保存到數據庫並將其分配給用戶之後。

在會話中保持它的一個好處是,如果用戶放棄註冊過程,則在數據庫中沒有記錄。我建議這樣做,因爲它很容易做到,並且如果用戶放棄會話,則不必有任何邏輯來清理數據庫。

要專門回答你關於匿名用戶的問題......不,沒有匿名用戶的唯一標識符。您可以使用Django中的會話來在視圖之間保留對象。

1

「我應該使用URL通過註冊過程來傳遞對象,直到註冊發生(然後保存它)?如何做到這一點?」

上面的建議,你已經是更好的解決方案,但不要傳遞給url。有兩種方法可以成功地做到這一點。

  1. 您可以通過會話變量傳遞對象,以便沒有人會注意到它,而不是將它傳遞給url。
  2. 您可以確定您必須通過其IP地址獲得哪個對象。