這似乎是一個簡單的問題,但我似乎無法找到一個簡單的答案。 Django似乎給了這種使用所需權限或登錄所需的裝飾器限制訪問位置的簡單方法,但是我從Django文檔看不到如何傳遞錯誤消息(可能使用消息框架)。如果我不得不推出我自己的裝飾器來做到這一點,那麼django裝飾器有什麼意義呢?他們只是沒有顯示任何錯誤信息?Django - 裝飾者和錯誤消息
2
A
回答
-1
我會認爲你只是避免閱讀本
http://docs.djangoproject.com/en/1.2/topics/auth/#the-login-required-decorator
login_required()執行以下操作:
如果用戶沒有登錄,重定向 到
settings.LOGIN_URL
,傳遞 查詢當前絕對路徑 字符串。例如:/accounts/login/?next=/polls/3/
。如果用戶已經登錄,請正常執行 視圖。查看代碼是免費的 以假定用戶已登錄。
沒有「錯誤消息」。錯誤消息是粗魯的。很大程度上沒用。它們通常是設計不好的標誌。
通常,你不需要一百萬個微小的解釋。事實上,80%的用例默認登錄頁面正常工作。 如果您需要澄清情況,您可以提供自己的HTML表單。您可以使用普通的模板上下文來添加其他信息。您有Messages Framework用於在登錄頁面上顯示額外的消息。
0
2
我認爲你正在將安全和權限與Django的身份驗證系統混合在一起。大多數情況下,Django的工具主要用於將用戶分爲兩組:驗證(登錄)和匿名。這對於90%的網站來說是有意義的,因爲你並不需要太多差異(對於隱藏的管理員來說可能是另一個,但這是一個邊緣情況,而不是常態)。
permission_required裝飾器是一個非常簡單的鉤子,用於希望重定向沒有權限轉到登錄頁面的用戶的人。但在某些時候,這還不夠。如果您需要特定權限並且用戶沒有該權限,那麼如何將其重定向到登錄頁面可以幫助他們?
在這種情況下,使用特定錯誤的消息來滾動您自己的裝飾器非常容易。一個這樣的例子:
def user_has_permissions(method):
return user_passes_test(lambda u: u.has_perm('my_permission'), login_url='/permission-denied/')(method)
相關問題
- 1. 如何裝飾錯誤消息
- 2. django user_passes_test裝飾者is_superuser
- 3. Django錯誤消息
- 4. Django Contenttypes和裝飾
- 5. WPF裝飾者與定製裝飾者?
- 6. django uploadify 302錯誤與@user_passes_test裝飾
- 7. Zend_Form裝飾器:無法查看錯誤消息(驗證)
- 8. 當裝飾失敗時顯示錯誤消息
- 9. Django字段錯誤消息
- 10. Django消息屬性錯誤
- 11. Django permission_required錯誤消息?
- 12. Django彈出錯誤消息
- 13. Django的消息錯誤
- 14. Django擴展錯誤消息
- 15. Python - 裝飾錯誤
- 16. 例裝飾錯誤
- 17. 阻止Django消息一次顯示錯誤消息和成功消息
- 18. 成本裝飾者
- 19. Rcpp初學者錯誤消息
- 20. ASIHTTPRequest錯誤消息 - 初學者
- 21. 裝飾者和裝飾控件之間的交換參數
- 22. 裝飾元素上的裝飾者和事件
- 23. django @login_required修飾符錯誤
- 24. 使用django和AngularJS登錄需要裝飾者與JWT
- 25. Django的拋出錯誤消息「‘裝載機’選項爲空」
- 26. 在MacOSX上安裝Django-toolbelt的錯誤消息
- 27. 裝飾觀點引起ViewDoesNotExist錯誤
- 28. Django @login_required裝飾器
- 29. Django的:用裝飾
- 30. 右Django的裝飾
您是否閱讀過文檔?他們重定向到登錄頁面。 – 2011-01-26 02:13:22