0

Django の最も優れた機能の 1 つは、MVC の考え方です。私はこれを非プロのプログラマーとして受け入れようとしました。このサイトの推奨事項から、Schedule Windows Task として毎日呼び出されるいくつかのスクリプトに対しても、django カスタム コマンドの使用を開始するよう勧められました。

ただし、コマンドごとにモジュールを作成する必要がある場合、多くの重複したコード行が作成されるようです。少なくとも、たとえば import ステートメント。これは本当にこれを行うための最良の方法ですか?私が考えることができる唯一の解決策は、汎用モジュール内で実行するコマンドとして引数を取る「汎用」カスタム コマンド モジュールを作成することです。

ここで私は真剣に考えていますか?Django カスタム コマンドを作成するための「ベスト プラクティス」は何ですか?

4

1 に答える 1

2

ベスト プラクティスは、「1 つのタスクと 1 つのコマンド」です。コマンドなしで manage を実行すると、検出可能性が向上します。

コードを完全に乾燥させることは絶対に良い考えですが、IMHO django コマンドはコード重複の主な原因ではありません。

基本的なコマンドは次のとおりです。

from django.core.management.base import BaseCommand
from django.contrib.auth.models import User
<specific imports for my project>

class Command(BaseCommand):
    help = "Produce sample accounts."

    def handle(self, *args, **kwargs):
       # do a thing

これは、django 自体の余分な作業ではありません。

独自のコードを DRY アウトする最もクリーンな方法は、アプリケーションの他の場所から handle() のコードを再利用することです。これにより、アプリケーション ロジックの変更が関連する管理コマンドに確実に反映され、多くの場合、インポートの長いリストが削除されます。これらのオブジェクトは、管理コマンドではなくコア アプリケーション ロジックから参照されるためです。

于 2013-08-22T12:31:16.060 に答える