Djangoでは静的ファイルの配信は、settings.py
にあるSTATIC_URL
で配信するURLは設定されますが、アプリケーションごとに配信するURLを設定したい事例がありました。
https://example.com/app1/static/
https://example.com/app2/static/
のようなイメージです。
本番環境等では、静的ファイルの配信は、nginxなどのwebサーバーに任せるべきことなので、正攻法としては、webサーバーのリバースプロキシやmod_rewriteなどでURLを変更させるのが良いかと思います。
djangoのrunserverでサクッと検証するには、urls.pyに以下のようにすれば、できました。
app1/urls.py
from django.views.static import serve
from os.path import join
from testProj.settings import BASE_DIR
urlpatterns = [
re_path(r'^static/(?P<path>.*)', serve, {'document_root':join(BASE_DIR, 'app1', 'static'}),
...
]
プロジェクトのurls.pyに記述する場合は、以下のように。
testProj/urls.py
from django.views.static import serve
from os.path import join
from testProj.settings import BASE_DIR
urlpatterns = [
re_path(r'^app1/static/(?P<path>.*)', serve, {'document_root':join(BASE_DIR, 'app1', 'static'}),
...
]