我試圖根據用戶是否登錄來選擇性地處理我的Django/Python應用程序中的字段。基本上,我有類似以下模型:基於Django中的用戶認證設置模型字段的值
class Resource(models.Model):
uploaded = models.DateTimeField()
name = models.CharField(max_length=200)
description = models.CharField(max_length=500, blank=True)
file = models.CharField(max_length=200)
我想要做的是,如果用戶發生在(登錄並訪問基於此資源文件屬性設置爲一個值對某些權限後端進行測試),以及用戶未登錄時的另一個值。因此,當任何客戶端代碼嘗試訪問Resource.file時,如果用戶未登錄'http: //mysite.com/dummy_resource_for_people_without_access'。但是,如果用戶登錄並通過了一些權限測試,那麼resource.file的值實際上就是該資源的真實URL(包括訪問該資源的任何安全密鑰等)。
從我讀過的內容看來,只能通過將請求上下文從視圖函數傳遞給模型來考慮當前登錄的用戶。但是,在上面的用例中,我試圖更加緊密地控制模型中的訪問,而不需要客戶端代碼調用特殊函數。
是否需要將url存儲在數據庫中,還是可以動態生成?能夠訪問模型中的用戶/請求不應該在django中用於各種設計最佳實踐;您應該始終傳遞用戶對象或重新考慮您的設計! – 2010-11-04 00:17:25
必須使用文件密鑰以及其他安全數據動態生成URL。 – Faisal 2010-11-04 13:24:52