django複数のAPPの時にstaticファイルの問題を解決します。


各アプリには自分のスタンticフォルダがありますが、どうやって設定すればミックスされませんか?
以下は実例です。(私のプロジェクトには二つのAPP(loginとmain)があります。
1、まずセットアップファイルで設定経路を変更する

STATIC_URL = '/static/'
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, "MGStudio", "static"),
  os.path.join(BASE_DIR, "main", "static"),
  os.path.join(BASE_DIR, "login", "static"),
]
2、各APPの下のstaticでAPP名で同じフォルダを作成する
例えば私はlogin/static/login/にいます。
スタイルJS CSSなどを入れる
3、スタイルの呼び出し方法

{% static 'main/img/firefox-logo-small.jpg' %}

{% static 'login/img/name.png' %}
補足知識:Djangoプロジェクトがオンラインになった後、xadminなどの静的文書問題(djangoのsettingsのいくつかのstatic設定項目の関係)をロードできません。
多くはstaticのsettings.py設定問題です。
ここに他のアプリのstaticを設置しないとロードできません。
1.settings.pyにはこのように設定されています。

STATIC_URL = '/static/'
#          static      ,                    .
#       ,   collectstatic    .
STATIC_ROOT = os.path.join(BASE_DIR, 'static1')

#              
#           
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, 'static'),
  os.path.join(BASE_DIR, 'myapp', 'static'),
  os.path.join(BASE_DIR, 'userapp', 'static'),
  ]
上の一番目はプロジェクトのルートディレクトリの下のstaticです。
次の二つは他のアプリのstatic、mypap、userapそれぞれあなたの他のアプリの名前です。
例えばxadminの下にstaticがあるなら、それを加えるべきです。
os.path.joinDIR,‘xadmin’,‘static’)
urlsの中にセットします。(主urlsの設定が複数あれば)

from blog.settings import STATIC_ROOT

urlpatterns = [
  url(r'^admin/', admin.site.urls),
  
  #              
  url(r'^static/(?P<path>.*)/$', serve, {'document_root': STATIC_ROOT}),
2.プロジェクトディレクトリで実行
python manage.py collect static
この時は先ほどあなたが指定したstaticをすべて一つのディレクトリに集めます。
3.inxにstaticディレクトリのパスを設定すると、先ほど設定したstatic 1になります。

    charset utf-8;
    location / {
      include uwsgi_params;
      uwsgi_pass 127.0.0.1:8997;
      uwsgi_param UWSGI_SCRIPT blog.wsgi;
      uwsgi_param UWSGI_CHDIR /home/wwwblog/myblog/;
 
    }
    location /static/ {
    alias /home/wwwblog/myblog/static1/; #      
    }
以下は関連知識の勉強です。
djangoのsettingsのいくつかのstatic設定項目の関係
djangoのsettingsには三つのstatic関連設定項目が含まれています。
STATIC_ROOT
STATIC_URL
STATIC FILES_DIRS
STATIC_URLが分かりやすいということは、静的なファイルに写るurlです。
STATIC FILES_DIRSはリストです。各アプリのstaticディレクトリと公共のstaticディレクトリを置きます。
STATIC_ROOTは全体のstaticディレクトリです。コマンドで自動的にstaticファイルを収集できます。
より詳細な説明:
STATIC_ROOT:manage.py collectstaticを実行すると、静的ファイルがコピーされるディレクトリです。注意:あなたのプロジェクトの静的なファイルをこのディレクトリに置かないでください。このカタログは、collect staticを実行する時にのみ使用されます。最初はこのカタログとMEDIA_を当たり前のように思っていました。ROOTの役割は同じで、開発環境下で静止ファイルが見つからないままです。
STATIC_URL:設定されたstatic fileの開始urlは、これはtemplateの中でのみ引用できます。このパラメータとMEDIA_URLの意味は大体同じです。
STATIC FILES_DIRS:各アプリのstaticディレクトリの他に、プロジェクト共通の静的ファイルのような管理が必要です。TEMPLATEとDIRSの意味は似ています。
各APPの下でstatic/ディレクトリの下の静止ファイルdjangoの開発サーバが自動的に見つけられます。これは以前のAPPの下のtemplatesディレクトリと同じです。
プロジェクトがあると仮定して、二つのアプリがdemo 1とdemo 2です。
django処理staticの方法は、それぞれのアプリをそれぞれのステージに統合することです。
たとえば
djangodemo/djangodemo/static公共静止ファイルを置く
djangodemo/demo 1/staticは、アプリケーション自体の静的なファイルを配置します。
djangodemo/demo 2/staticは、アプリケーション自体の静的なファイルを配置します。
このように設定できます。

STATIC_URL = '/static/'
STATICFILES_DIRS = (
  os.path.join(BASE_DIR, 'static'),
 os.path.join(BASE_DIR, 'demo1', 'static'),
 os.path.join(BASE_DIR, 'demo2', 'static'),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'static1')
コマンドを使う
python manage.py collect static
自動的にすべての静止ファイルをSTATIC_にコピーします。ROOT(つまりstatic 1)で
adminまたは(xadmin)を開くには、このステップが必要です。そうでないと、生産環境に配置された時には、様式ファイルが見つかりません。
以上のdjango複数のAPPを解決する時のstaticファイルの問題は小編集が皆さんに提供したすべての内容です。参考にしていただければと思います。どうぞよろしくお願いします。