3

ですから、私のチームと私はDjangoの開発に不慣れです。私たちは過去数週間にわたってプロジェクト構造を設計しようとしてきましたが、これを行うためのベストプラクティスを理解するために、多くの読書を行いました。

ただし、すべてのアプリケーションに一般的なテンプレート/静的ファイルを保存するための最良の方法については、まだ頭を悩ませています。

これまでに実装した構造について詳しく説明します。

root-folder/
    app-1/
        static/
            app-1/
                css/
                js/
                img/
        templates/
            base.html
            base-app-1.html **extends base.html
    app-2/
        static/
            app-2/
                css
                js
                img
        templates/
            base.html **extends base.html at 'project-name' level
            base-app-2.html **extends base.html
    project-name/
        collectstatic/
        templates/
            base.html
    static/
        base/
            css
            js
            img

この構造で私を悩ませているのは、トップレベルのテンプレートが「project-name」レベル内にあることです。このフォルダーをルートレベルの静的フォルダーと同じレベルで表示したいと思います。

ただし、ルートレベルの静的フォルダーのコンテンツを「project-name / collectstatic」に移動したくないのは、そのフォルダー内のファイルのバージョン管理が必要ないためです。

Djangoの世界では、この問題に対する決定的な答えはないことを認識しています。しかし、私たちは正しい方向に進んでいますか?私たちは何かを誤解しましたか?

私たちが持っているいくつかのアイデアは次のとおりです。

  1. 「general」または「generic」に沿って何かと呼ばれるトップレベルのテンプレートとhtdocs専用のアプリを用意すること。
  2. 'project-name / templates'ディレクトリをルートレベルに移動するには、そこにある'static'フォルダと一緒に移動します。
  3. この問題について話すのをやめて、上に描いた構造を使ってください。
4

1 に答える 1

1

AppDirectoriesFinderDjangoでは、静的ファイルとテンプレートを管理するために、staticfilesのファインダーとテンプレートの'app_directories.Loader`ローダークラスに依存することが望ましいです。

つまり、プロジェクト全体で再利用される基本テンプレートと静的リソースを入力する、ある種のアプリケーションがありproject.coreますproject.baseproject.commons

フォルダの問題は、バージョン管理下にあるパス上でproject-name/collectstatic/定義されていることだと思います。STATIC_ROOT理想的には、静的ルートとメディアルートをプロジェクトのソースの外に移動します。最も簡単な解決策は、プロジェクトの最上位パッケージの横、Pythonパッケージを配布するための標準プロジェクトレイアウト、またはWebサーバーの事前構成されたドキュメントルートに移動することです。

いずれにせよ、これにより、ローカルで生成された静的リソースがプロジェクトのPythonパッケージの外に移動するはずです。

于 2012-07-22T13:49:11.420 に答える