場所固有のコンテンツを提供できるようにアプリケーションをセットアップすることに関心があります。
miami.craigslist.org がマイアミの投稿のみを表示する craigslist のようなもの。
City フィールドを持つモデルがあると仮定すると、これを達成するための最良の方法は何でしょうか?
場所固有のコンテンツを提供できるようにアプリケーションをセットアップすることに関心があります。
miami.craigslist.org がマイアミの投稿のみを表示する craigslist のようなもの。
City フィールドを持つモデルがあると仮定すると、これを達成するための最良の方法は何でしょうか?
Banjer は Sites フレームワークを提案しましたが、それがあなたの状況に 100% 完璧に適合するとは思えません。サイト フレームワークは、同じデータベースを共有するさまざまなサイトでうまく機能します。しかし、あなたの場合、それはすべて同じサイトであり、基本的には都市の見解に引数を渡したいだけです.
*.domain.com
おそらく、django サイトにワイルドカードを指定request.get_host()
し、ビューで使用してサブドメインを解析するだけで、さらに簡単なことを行うことができます:
https://docs.djangoproject.com/en/1.4/ref/request-response/#django .http.HttpRequest.get_host
したがって、ドメインが「losangeles.domain.com」で、「losangeles」を解析した場合、それをクエリで都市の「タグ」として使用できます。また、新しいコンテンツを作成するときは、都市でタグ付けするだけです.
Post.objects.filter(city_tag="losangeles")
サイトで必要な「場所」構造の堅牢性に依存すると思います。City
フィールドを含むさまざまなメタデータ フィールドを持つモデルである可能性が非常に高いtag
です。次に、それを外部キーとしてコンテンツに関連付けます。サイト フレームワークと同じ一般的な考え方にアプローチしますが、この場合、実際には別のサイトを作成しているわけではありません。
「サイト」フレームワークをチェックアウトする必要があります。組み込みの Django admin を使用したことがある場合は、example.com がデフォルトでリストされている唯一のサイトであるサイト セクションを見たことがあるでしょう。
私が提供したリンクからの実世界の例:
コンテンツを複数のサイトに関連付ける
Django を利用したサイト LJWorld.com と Lawrence.com は、同じニュース組織 (カンザス州ローレンスにある Lawrence Journal-World 新聞) によって運営されています。LJWorld.com はニュースに焦点を当てており、Lawrence.com は地元のエンターテイメントに焦点を当てています。しかし、編集者が両方のサイトで記事を公開したい場合があります。
この問題を解決する脳死の方法は、サイト プロデューサーに同じ記事を 2 回公開するよう要求することです。しかし、それはサイト プロデューサーにとって非効率的であり、同じ記事の複数のコピーをデータベースに格納するのは冗長です。
より優れた解決策は単純です。両方のサイトが同じ記事データベースを使用し、記事が 1 つ以上のサイトに関連付けられています。
そのため、City フィールドの代わりに、Site のモデルにフィールドを追加します。たとえば、次のようになります。
sites = models.ManyToManyField(Site)
基本的に、すべての都市が使用する 1 つのデータベースがあります。便利だけど、どうやって縮小していくのか気になる。私自身も同様のプロジェクトを開始しており、Django サイト フレームワークを使用してプロジェクトを開始します。ただし、データベース担当者から、よりスケーラブルなソリューションについて聞くことに興味があります。