7

私はdjangoを初めて使用し、Drupalからdjangoに移行しました。

Drupalでは、DBに格納され、Drupalの「コアテーブル」の1つを使用するモジュールレベルの変数(djangoの「アプリケーション」を読み取る)を定義できます。イディオムは次のようになります。

variable_set('mymodule_variablename', $value);
variable_get('mymodule_variablename', $default_value);
variable_del('mymodule_variablename');

アイデアは、各モジュール(アプリ)が「モジュールテーブル」全体をインスタンス化して1つの値を格納するだけでは意味がないため、コアはモジュール間で共有される共通の値を提供します。

ジャンゴについての私の初心者の理解の限りでは、ジャンゴにはそのような機能がありませんが、それは一般的なパターンであるため、ジャンゴ開発者が解決するために使用する典型的/標準/慣用的な方法があるかどうかを確認するためにSOコミュニティに頼ろうと思いましたこの問題

(ところで、値は設定ファイルに入れることができる定数ではありません。毎日更新する必要があり、要求ごとに読み取る必要がある値です)。

4

3 に答える 3

6

これを実現するアプリはありますが、簡単な説明として、disqusのdjango-modeldictをお勧めします

ModelDictは、設定などをデータベースに保存するための非常に効率的な方法です。モデル全体が(怠惰に)辞書に変換され、キャッシュに保存されます。必要な場合にのみ無効になります(処理中とCACHE_BACKENDに基づく場合の両方)。

于 2012-04-09T14:38:39.790 に答える
2

静的でないデータはモデルに保存されます。アプリ間でデータや関数を共有する必要がある場合は、「共通」のような共有アプリを作成するという慣習を見てきました。これには、共有モデルまたはユーティリティ関数が含まれます。

djangoプロジェクトでは、データは通常特定のものです。保存するデータは、そのデータを表すモデルに含まれている必要があります。データを表す明示的なモデル/オブジェクトを作成してから、大きく異なるデータを格納する汎用オブジェクトを作成します。

毎日変更される1つまたは2つの変数のみを定義している場合、おそらくmemcachedのようなキー/値ストアだけが機能しますか?

于 2012-04-09T14:28:05.973 に答える
2

ModelDictのもう1つの+1。もう1つの潜在的な同様のソリューションは、DjangoConstanceです。

https://github.com/jazzband/django-constance

これは、アプリ構成パラメーターをデータベースに保存することを目的としており、管理者向けに(適切な権限で)編集するための優れたバックエンドを公開し、デフォルト値を処理し、キャッシュなども備えているという利点があります。

編集:

ドキュメントから明らかでない場合(そうではありません)、設定を「Pythonicの方法」と同じように設定できます。つまり、設定を値に設定するには、

constanceimportconfigから

config.variable_name = value

于 2016-08-30T00:23:29.070 に答える