[解決済み】Django。"プロジェクト "と "アプリ "の違い
質問
私は、Django を使って構築する準備をしている、かなり複雑な "product" があります。Django における具体的な意味がよくわからないので、この文脈では "project" と "application" という用語は使わないことにします。
プロジェクトは多くのアプリを持つことができます。アプリは多くのプロジェクト間で共有することができます。結構です。
私はブログやフォーラムを再発明しているわけではありません。私の製品のどの部分も、どんな文脈でも再利用可能だとは思えません。直感的に、私はこれを1つのquot;application.quotと呼ぶでしょう。それから、私はすべての作業を1つのquot;app"フォルダで行うのでしょうか?
もしそうなら
... Django の観点では
project.app
名前空間を使用する場合、私の希望としては
myproduct.myproduct
しかし、もちろんこれは許されません(しかし、私が作っているアプリケーションは私のプロジェクトであり、私のプロジェクトはアプリケーションなのです!)。したがって、おそらく私は、 "significant" モデルごとに1つのアプリを構築することでDjangoにアプローチすることになっていると思いますが、私のスキーマのどこにアプリに分けるための境界線を描けばいいのかわかりません - 私は比較的複雑な関係を持つ多くのモデルを持っています。
何か共通の解決策があればいいのですが......。
解決方法は?
を使用しない理由は何ですか?
myproduct.myproduct
? それを実現するために必要なことは、おおよそ次のように構成されています。
django-admin.py startproject myproduct
cd myproduct
mkdir myproduct
touch myproduct/__init__.py
touch myproduct/models.py
touch myproduct/views.py
といった具合です。と言えば、解決するでしょうか?
views.py
という名前である必要はありません。
views.py
? Pythonのパス上で関数名(通常は package.package.views.function_name) を指定すれば、それが処理されます。単純なことです。この "project"/"app" はすべて Python パッケージに過ぎません。
さて、どうすればいいのでしょうか?というか、どうすればいいんだろう?例えば、マークアップエディターのような再利用可能な機能の重要な部分を作成する場合、トップレベルのアプリを作成します。
widgets.py
,
fields.py
,
context_processors.py
などなど、インポートしたいものばかりです。
同様に、もしあなたがブログのようなものを、インストールに関係なく汎用的なフォーマットで作成できるなら、それを独自のテンプレートや静的コンテンツフォルダなどを持つアプリでラップし、そのアプリのコンテンツを使用するために django プロジェクトのインスタンスを構成することができます。
こうしなければならないという厳密なルールはありませんが、フレームワークの目標の1つです。テンプレートも含めて、すべてが共通のベースからインクルードできるということは、あなたのブログは、それ自身の部分の世話をするだけで、他のどんなセットアップにもぴったりとフィットするはずです。
しかし、実際のところ、プロジェクト・フォルダーの最上位で作業できないということはないのです。
それは、アプリの仕事
本当にやりたければやればいいんです。しかし、私はいくつかの理由から、そうしない傾向にあります。
- Django のデフォルト設定では、これを行いません。
-
多くの場合、メインのアプリを作りたいので、通常は
website
. しかし、後日、このサイトだけのオリジナル機能を開発したくなることがあります。そのときは、取り外しができるようにすることも考えて(するかどうかは別として)、別のディレクトリを作ることが多いです。これはまた、グローバルなurls.pyフォルダから正しいURLを削除するという複雑な作業ではなく、そのパッケージを設定からアンリンクしてフォルダを削除するだけでその機能を削除できることを意味します。 - 何かを独立させたいときでも、その世話をしたり独立させたりする間の住処が必要なことが非常に多い。基本的には上記のようなケースですが、一般的なものにするつもりです。
- 私のトップレベルフォルダには、wsgiスクリプトやsqlスクリプトなど、他のものが含まれていることがよくあります。
- djangoの 管理拡張機能 はサブディレクトリに依存しています。そのため、パッケージに適切な名前を付けることは理にかなっています。
要するに、規約がある理由は他の規約と同じで、他の人があなたのプロジェクトで作業するときに役立つからです。もし私が
fields.py
私はすぐにその中のコードが django のフィールドをサブクラス化することを期待しますが、一方で
inputtypes.py
見ないと意味がよくわからないかもしれませんね。
関連
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
Python入門 openを使ったファイルの読み書きの方法
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] Djangoの "slug "とは何ですか?
-
[解決済み] Djangoのバージョンを確認する方法
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピロウズ画像色処理の具体的な活用方法
-
pythonを使ったオフィス自動化コード例
-
python string splicing.join()とsplitting.split()の説明
-
任意波形を生成してtxtで保存するためのPython実装
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。