1

サイト用のアプリを作成するが、アプリをプラグアンドプレイにして、Djangoプロジェクトにドロップして、メインURLを設定すると、すべてを保持したい場合はどうすればよいでしょうか。ポータブルアプリに含まれているその他の必要なユーティリティアプリ。

例:

site/
site/site-app1
site/templates/site-app1
site/util-app1
site/util-app2
site/util-app3

注:site-app1は、3つのutil-appsすべてを使用することに注意してください。このようにうまく機能します。しかし今、あなたはアプリを誰かに送ることにしましたが、そのアプリとそのすべての依存関係だけです。

このようなアプリをパッケージ化して送信できるとしたら?:

site/site-app1
site/site-app1/template
site/site-app1/util-app1
site/site-app1/util-app2
site/site-app1/util-app3

次に、site-app1を送信するだけで、すべてがそれに伴います。

サブディレクトリとしてユーティリティアプリを使用してポータブルにする方法はありますか?

注:プロジェクト全体を送信するのではなく、プロジェクト内の1つのサイトアプリのみを送信するという考え方です。

4

3 に答える 3

2

再利用可能なdjangoアプリについていくつかのプレゼンテーションがありましたので、周りを検索してください。これらはあなたを動かすはずです:

于 2009-05-29T18:42:18.337 に答える
1

Djangoアプリケーションは、特定の慣行に従うことで移植可能にすることができます。もちろん、これらは必須ではありません

アプリケーションの場所

慣例では、apps /ディレクトリにアプリケーションを追加し、manage.py(および最終的にはapache構成)を変更して次のようにします。

import sys
from os.path import abspath, dirname, join
PROJECT_ROOT = abspath(dirname(__file__))
sys.path.insert(0, join(PROJECT_ROOT, "apps"))

ディレクトリ構造は次のようになります

site
site/apps/
site/apps/app1/
site/apps/app2/

テンプレート

テンプレートは、アプリケーションのテンプレートディレクトリにあります。慣例では、ユーザーに他の場所にそれらをコピーするように強制することはありません。最終的に、ユーザーはグローバルテンプレートを使用して、アプリケーション内のテンプレートをオーバーライドできます。

設定

すべてのデフォルト設定をアプリディレクトリ内のローカルファイルに保持します。設定はグローバル設定によって上書きされます。ローカル設定ファイルは次のような構造になります。

from django.conf import settings

def get(key, default):
    return getattr(settings, key, default)

SETTING_1 = get('SETTTING_1', 10)

これらの規則は、ほとんどの主要な問題をカバーする必要があります。

于 2009-05-30T05:02:43.143 に答える
1

@Gerryがリンクしているプレゼンテーションは、一般的な情報の優れた情報源です。あなたの質問にもっと直接的に答えるために、あるアプリを別のアプリの中にパッケージ化する方法はありません(編集申し訳ありませんが、これはまったく間違っています。あるアプリを別のアプリの名前空間の中に置くことができ、それはうまく機能します。それはただし、奇妙なことに、一方のアプリがもう一方のアプリの一部であることを示唆しています。それが本当なら、単一のアプリとして使用する方が簡単です。したがって、以下のオプションのいずれかをお勧めします)。AFAICTのオプションは次のとおりです。

  1. 可能であれば、これらの外部依存関係をオプションにします(つまり、util_app1が使用可能な場合は拡張機能、使用できない場合はフォールバック動作)。これは、たとえばdjango-taggingまたはdjango-mailerに関して動作するアプリの数です。

  2. すべての機能を1つのアプリにまとめます。ユーティリティアプリから実際に依存しているコードの量によっては、アプリが機能するために依存関係が絶対に必要な場合、これはユーザーにとって物事を簡単にするための最良のオプションかもしれません。

  3. すべてのアプリを個別にパッケージ化して配布し、ドキュメントとsetup.pyinstall_requiresの両方で依存関係をメモします。すべてのアプリが独立して役立つ場合は、このアプローチが最適な場合があります。それらがすべて独立して有用ではない場合、なぜそれらはすべて別々のアプリなのですか?

于 2009-05-30T02:17:31.803 に答える