我試圖創建一個簡單的Django模板標籤來顯示或隱藏在我的網站上提交的評論旁邊的「刪除」鏈接。如何爲訪問控制編寫Django模板標籤?
概括地說,我要評論對象傳遞給模板標籤,確定在當前登錄的用戶有權刪除註釋,然後顯示或不顯示的鏈接。
模板中的用法是,像這樣:
{% load access_tags %}
{% if_authorized comment %}
<a href="{% url delete_comment comment.id %}">Delete</a>
{% endif_authorized %}
放心,我還要檢查在適當的視圖,如果用戶有權刪除評論。
請問這種類型的標籤都有一個特定的名字嗎?如果確實如此,它肯定會幫助我進行Google搜索。謝謝你的幫助!
更新1:
我的網站的工作,兩個人可能有權刪除評論的方式:1)評論創建和2),其中留下評論的帖子的主人。因此,我需要根據評論確定是否存在這些情況之一。
我不認爲我可以使用像Django的內置權限系統正,因爲它要求的權限「被每個類型的對象,沒有按特定對象實例全局設置」。
在我的情況下,用戶「Bob」可能有權刪除評論(如果他寫了或者他創建的帖子),但他也可能不允許刪除它(如果他在看對別人的帖子發表評論)。
更新2:
看來,你不能傳遞對象到模板標籤,只有字符串:「雖然你可以傳遞任何數量的參數使用token.split_contents模板標籤(),參數都是解壓縮爲字符串文字。「我想我會傳遞有問題的評論對象的id,並將其拖入標記中。
我錯了這一點,只需要訪問傳入的對象,如:
self.comment.resolve(context).user
與
self.comment.user
冷靜的解決方案,我適應它,所以你可以檢查用戶權限。你也可以將它們嵌套在一起,這非常適合!謝謝 – 2017-07-25 13:59:09