0

私は現在、大きな django プロジェクトに取り組んでいます。

多くのトピック センター、書籍、その他のメディア プロファイル、著者プロファイル、および著者プロファイルを持つことができる通常のユーザー プロファイルを備えた巨大なトピック ポータル。

今私がしていることは次のとおりです。

1 つの django アプリ、いつものようにテンプレート フォルダーがあり、テンプレートを作成すると、テンプレートの数が膨大になります。

1 つのプロジェクトで複数のアプリを使用することは経験したことがありません。

それが私がやっていることでいいのか、それとも複数のアプリを使うべきなのか、誰か教えてもらえますか?

または、別の言い方をすれば、1 つのプロジェクトに複数のアプリを含めることが理にかなっているのはいつですか?

前もって感謝します

4

2 に答える 2

2

Django は、複数のアプリを持つことで成功するように作られています。ユーザーサインアップ用に 1 アプリ、プロフィール用に 1 アプリ、コメント用に 1 アプリ、ブログ投稿用に 1 アプリなど。

あなたが指摘したように、1つのアプリですべてを行うと、すぐに混乱につながります. Django を使用する最善の方法は、非常に特殊なアプリケーションを多数作成することです。これにより、必要に応じて他のプロジェクトで再利用できるアプリを増やすこともできます。

Django プロジェクトには多数の「構造」が考えられます。私は最もモジュール化されたアプローチを採用します。そして、すべての機能について自問自答してください。これは別のアプリに直接属していますか? 答えが「いいえ」の場合は、別のアプリを作成する方がよいでしょう。

たとえば、同じブログ投稿アプリを複数の Web サイトで使用でき、ページの新しいレイアウト/デザインに合わせてテンプレートを変更するだけで済みます。すべてのロジックはほとんど同じである必要があります。また、ブログ投稿のロジックは、プロフィールなどを表示するロジックにリンクされるべきではありません。

例: コメント アプリの場合、モデルは次のようになります。

from django.db import models

from profile.models import Profile
from blog.models import Blog

class Comment(models.Model):
    user = models.ForeignKey(Profile, related_name='comments')
    blog = models.ForeignKey(Blog, related_name='comments')
    message = models.CharField(max_length=200)
于 2013-12-17T13:39:01.770 に答える
1

他のアプリに依存しないコアアプリを持つことができます (ほとんどの場合、次のようなものになります)

  • コア テンプレート ビューとモデルを含むコア アプリ (
  • 認証テンプレートとモデルを持つアカウント
  • 便利なものを備えたツールアプリ

および上記を使用する「アプリケーション」アプリ

  • topiccenter1 - 特定のテンプレート、ビュー、およびモデル
  • topiccenter2 - 特定のテンプレート、ビュー、およびモデル

開始するのに適した構造は、「Django の 2 つのスクープ」 https://github.com/twoscoops/django-twoscoops-projectのテンプレートです。

「ありがとう、とてもいいご指導です。すべてのモデルが関連しているので、複数のアプリに分割すると関連が壊れませんか?」

アプリ間でモデルを分割できるはずです-読んでください:

Django の別のアプリケーションで ManyToMany リレーションを定義する

アプリ間のDjango関係:アプリを別々に保つ方法は?

于 2013-12-17T14:12:21.050 に答える