2012-11-28 38 views
0

這是我在web開發中的第一個項目,我使用Django構建物品預訂系統。用鏈接發送郵件給用戶,鏈接只能使用一次

要求:如果用戶保留一個物品並使用它超過一個星期,電子郵件將被髮送給他以重新確認物品的使用情況。

每個電子郵件都會有一個鏈接,顯示用戶使用超過一週的所有項目,項目將根據用戶決定發佈或繼續使用。

這裏是場景,用戶打開電子郵件中提供的鏈接兩次(可能會更多),正如我所說,每個打開的鏈接都會有他正在使用的項目列表。 在「第一個」鏈接中,用戶取消選中一個項目並提交,然後他會轉到「第二個」鏈接(顯然包含錯誤的數據),並嘗試取消選中某個項目並提交。 我想在用戶在「第二」鏈接提交時發出錯誤,說您已經執行了此操作。

我的解決方案是使用表中的字段(user_table在數據庫中)說「link_used」,並且當用戶使用「第一個」鏈接並且當他使用第二個鏈接時,代碼將檢查 「link_used」列併發出錯誤消息。

此「link_used」列將在發送下一封郵件時重置。

我的解決方案是否正確?

使用Google搜索並沒有找到與我的方案相關的解決方案。

回答

0

通過這樣做,你將失去歷史並要求運行條件。

改爲爲類似於下面例子的鏈接/電子郵件創建單獨的模型。

class OneTimeCode(models.Model): 

    user = models.ForeignKey('auth.User') 
    code = models.CharField(…) 
    date_sent = models.DateTimeField(auto_now_add=True, …) 
    date_used = models.DateTimeField(null=True, …) 

    @property 
    def link_used(self): 
     return self.date_used is not None 

這樣你就可以保留所有的代碼及其使用的歷史。

相關問題