2

サイト フレームワークを使用して、1 つのコード ベースから複数のアプリを実行しています。3 人のユーザーと 3 つのサイトがあります。彼らは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)

これは私が混乱しているところです。サイトとユーザーへの参照を持つウェブログの概念も理解しています。しかし、その人が自分のために作成された自分のウェブログのエントリのみを表示および追加/編集できるようにするにはどうすればよいでしょうか?

ありがとう

4

2 に答える 2

1

はい、Djangoサイトフレームワークはまさに​​それを行うことができます。私はあなたがすでに何をしたかについて多くの情報を持っていないので、私はあなたを本当に助けることができないので、詳細を教えてください。

特定のドキュメントも確認してください。

編集わかりました、わかりました。あなたの問題は、ユーザーが専用サイトに関するコンテンツのみを表示および編集するように制限することです。これはもう少し複雑です。

このビューと編集を処理するために管理インターフェースとカスタムビューのどちらを使用するかによって異なります。カスタムのものを使用する場合は、使用するクエリセットを簡単に変更できますが、管理インターフェイスを使用していると思います。

この場合、デフォルトのマネージャー(オブジェクト)をCurrentSiteManager()でオーバーライドすることでジョブを実行できます。だが

  • 副作用が発生する可能性があります。デフォルトのマネージャーをオーバーライドすることはお勧めしません。テストする必要があります(最初の副作用は、すべてのサイトのすべての編集のリストが表示されないことです)。
  • ユーザーAがサイトBの管理インターフェースにログインできないことを確認する必要があります

別の解決策は、これらのWebサイトごとにカスタム管理者を作成することです。管理ドキュメントを参照してください。

ただし、質問です。ユーザーがこれらの各Webサイトのコンテンツを編集できるようにしたくない場合は、このすべての管理Webサイトへの一意のインターフェイスが必要ですか?たとえば、1人のユーザーがすべてのサイトのコンテンツを編集できるようにする場合)そうでない場合は、サイトフレームワークが適切ではない可能性があります。各ウェブサイトを独立させ、明確に分離する必要がありますか?

もう1つの解決策は、ビューへのカスタムアクセス許可を定義できるDjangoのアクセス許可の可能性を調べることです。管理者ビューを保護するためにも使用できると思います(試したことはありません)。

これがお役に立てば幸いです。

于 2011-02-10T21:24:32.837 に答える
0

Django-site-permissions アプリケーションはまさにそれを行います:

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

必要に応じてプロジェクトに統合するか、ソース コードをチェックして、サイト全体のアクセス許可を実装する方法を確認してください。

(免責事項: 私は django-site-permissions アプリの開発者です)

于 2011-05-30T12:25:15.183 に答える