1

WebショップをホストするDjango主導のサイトを構築しているとしましょう。それをwebshop.comと呼びましょう。私はそれがこのように機能することを望みます:

Fooという名前のショップがウェブショップを希望しています。それらはwebshop.comに登録され、サブドメインfoo.webshop.comとデータベースfoo_DBが作成されます。Fooの所有者は、foo.webshop.com/adminの管理インターフェースを使用して製品を入力します。その後、顧客はfoo.webshop.comから製品を購入できます。

ショップバーにはwebshopbar.webshop.comがあります。webshop.comでホストされている他のWebショップとはまったく関係ありません。等々。webshop.comは、何百ものストアをホストできるはずです。

問題は、Djangoでこれをどのように行うべきかということです。

最初は、Webショップごとに1つのsettings.pyファイル、1つの仮想サーバー、および1つのデータベースが必要だと考えていました。ただし、これらすべてのインスタンスを実行すると、オーバーヘッドが大きくなりすぎる可能性があるのではないかと心配しています。

どんなポインタや考えも大歓迎です!

4

2 に答える 2

1

私はこのように機能する半ダースのアプリケーションを構築しました(Pythonにはありませんが、この場合は実際には無関係です)。

同じ仮想ホストからすべてを提供します。urlparseを使用してサーバー名を取得します。照合する文字列を取得したら、マスターデータベースで、顧客データベースに一致するデータベースの詳細(ホスト名、ユーザー名、パスワードなど)を検索します。クエリを実行する前に、必ずその値をサニタイズしてください。

私はあなたの最善の策はあなたの顧客データベースを分離することだと思います。これにより、1つのデータベースの問題ですべての顧客サイトがダウンすることはないだけでなく、それらを別のサーバーに配置することもできます。

于 2012-07-08T20:51:26.297 に答える
1

おそらく、 https://github.com/tkaemming/django-subdomains/を使用できますdjango-sudomains

これは、リクエストごとにサブドメインプロパティを作成するミドルウェアです。

各サイトの機能は同じであるため、要求されたsudomainに基づいて製品をクエリするだけで済みます。ユーザーにサブドメインを割り当てることもできます。

このサブドメインを考慮に入れることを除いて、すべてのビューは同じです。このアプローチは、各モデルにサブドメインを指すフィールドがある1つの共有データベース、またはサブドメインがデータベースnaemである共有データベースで簡単に機能します。https://docs.djangoproject.com/en/dev/topics/db/multi-db/#manually-selecting-a-database-for-a-queryset

于 2012-07-08T22:26:08.300 に答える