2

我正在使用網站框架從一個代碼庫運行多個應用程序。我有3個用戶和3個站點。他們可以登錄到django管理界面並創建內容,但我希望他們只能看到他們允許管理的網站,而不是其他人,網站框架可以處理這個問題嗎?如果不是,誰能指導我如何實現這個目標的正確方向?Django網站框架權限

編輯:

我所做的只是一個簡單的例子。這裏去...

class Weblog(models.Model): 
    title = models.CharField(max_length=250) 
    slug = models.SlugField(unique=True) 
    user = models.ForeignKey(User) # this is the user who should own that blog and see nothing else 
    site = models.ForeignKey(Site) 

    objects = models.Manager() 
    on_site = CurrentSiteManager() 

    def __unicode__(self): 
     return self.title 

class Entry(models.Model): 
    title = models.CharField(max_length=200) 
    slug = models.SlugField() 
    body = models.TextField() 
    author = models.ForeignKey(User) 
    weblog = models.ForeignKey(Weblog) 

這是我困惑的地方。我理解一個博客的概念,同時也引用一個網站和一個用戶。但是,那麼如何限制該人只能看到並添加/編輯他們自己創建的博客上的條目呢?

謝謝

回答

1

是的,Django網站框架可以做到這一點。由於我對你已經做了什麼沒有太多的信息,我無法真正幫助你,所以請給出更多細節。

另請檢查the specific documentation

編輯好吧,我現在明白了,您的問題是限制用戶只能查看和編輯有關其專用網站的內容。這有點複雜。

這取決於您是否使用管理界面或自定義視圖來處理此視圖和編輯。如果你使用自定義的,可以很容易地改變使用的查詢集,但我想象你使用管理界面。

在這種情況下,使用CurrentSiteManager()覆蓋默認管理器(對象)可以完成這項工作。但

  • 它可以有副作用,覆蓋不建議默認的經理,你需要對其進行測試(第一個副作用是:你不會有所有編輯上的所有網站的列表)
  • 您必須確保用戶A無法登錄站點B管理界面

另一種解決方案可能是爲這些網站中的每一個創建自定義管理員。查看管理員文檔。

但是,只是一個問題:如果你不想讓用戶在這些網站的每一個上編輯內容,你是否需要有一個獨特的界面到所有這些管理網站?例如,讓一個人能夠編輯所有網站上的內容) 如果沒有,也許網站框架是不是要走的路,你應該更好地使每個網站獨立和明確分開?

另一種解決方案是尋找Django的permissions可能性,它允許您爲視圖定義自定義權限。我認爲(還沒有嘗試過)它也可以用來保護管理員的意見。

我希望這可以提供幫助。

+0

我編輯爲你DAKS,也許這將有助於。這是我用來構建別的東西的一個小例子,但同樣的原則適用。希望有所幫助 – JeffTaggarty 2011-02-11 05:47:18

0

Django的站點的權限的應用程序會做到這點:

https://github.com/bmihelac/django-site-permissions

您可以在您的項目是否符合您的需求,或者檢查源代碼,看看網站範圍的權限如何實現整合。

(免責聲明:我的Django站點的權限應用的開發者)