機能は似ているが、外観とコンテンツが異なるいくつかのサイトを取得するにはどうすればよいですか?すべてのデータが異なります。
その場でSITE_IDを変更し、独自のテンプレートローダーと静的ファイルファインダーを作成し(異なるサイトの同じURL / static /は異なるカテゴリを示します)、すべてのサイトにForeignKeyを追加しますか?
または他の方法はありますか?
ありがとう!
機能は似ているが、外観とコンテンツが異なるいくつかのサイトを取得するにはどうすればよいですか?すべてのデータが異なります。
その場でSITE_IDを変更し、独自のテンプレートローダーと静的ファイルファインダーを作成し(異なるサイトの同じURL / static /は異なるカテゴリを示します)、すべてのサイトにForeignKeyを追加しますか?
または他の方法はありますか?
ありがとう!
私は自分と同じようなことをしました。
私のビューには、ホストを取得するヘルパーメソッドがあります。
def getHost(request):return request.META ['SERVER_NAME']
次に、ホストに応じて、静的ディレクトリを2つのサイトstatic / host1 / static /host2/に分割します。
テンプレートについても同じことを行い、2つのディレクトリに分割して、適切なディレクトリを呼び出します。
同じインスタンスでDjangoサイトを分割するのは微妙な操作です。まず、モデルを念頭に置く必要があります。FlatPagesと同様に、モデルにはSitesテーブルへのManyToManyFieldが含まれている場合があるため、必要に応じて現在のサイトに従ってコンテンツをフィルタリングできます。
テンプレートと静的データについては、Markの回答が好きですが、別の方法で行うこともできます。テンプレートフォルダーと静的フォルダーを、テーマとテンプレート構成が異なる複数のフォルダーに分割できます。たとえば、テンプレートのセットを1つだけにし、次のような2つの「テーマ」を設定できます。
templates
/ normal_set
static
/ themes
/ blue
/ red
SitesテーブルへのOneToOneFieldを使用して、SiteConfigurationを呼び出すテーブルを作成できます。この構成テーブルには、サイト間でプロパティを共有できるように、サイトのテンプレートフォルダーの名前とテーマフォルダーの名前が含まれます。たぶん、データベースに頻繁にアクセスするのを避けるために、後でこれをキャッシュすることができます。この提案をマークの提案と混ぜてください。
私はあなたのユーザーがすべてのサイトを通して同じままであると思います。
この正確なユースケース向けに設計された2つのパッケージがあります。
Django 1.8以降の場合、 https: //bitbucket.org/levit_scs/django-pollaがあります
古いバージョンのDjangoを使用している場合は、https://bitbucket.org/uysrc/django-dynamicsites/overviewを使用できます。
この答えはかなり遅いですが、私はそれが人々がこの質問につまずくのを助けることができることを願っています