如何在多个端点上提供静态文件?

时间:2019-05-12 09:33:26

标签: python django reactjs django-staticfiles

我正在为2个具有单个python后端的React应用程序提供服务。现在,我为HttpsREsponse服务index.html,并且将build/static包含在STATICFILES_DIRS中。因为这些文件的哈希值是前置的,所以可以将它们混在一起。但是我需要一种方法来服务build内的所有那些文件,例如manifes.jsonfavicon.ico。为所有人创建一个View似乎是一个糟糕的主意。我很愿意将app1/build用作static/app1,将app2/build用作static/app2

我搜索了Django文档,发现了如何从多个位置收集静态信息以及有关在多个URL上托管它们的任何信息。

这是我现在的设置:

# settings.py
STATICFILES_DIRS = [
    os.path.join(APP1_DIR, 'build', 'static'),
    os.path.join(APP2_DIR, 'build', 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

# urls.py
urlpatterns = [
    url(r'^app1/manifest.json$', getStaticFileView(app='app1', 'manifest.json').as_view()),
    url(r'^app1', getStaticFileView(app='app1', 'index.html').as_view()),
    url(r'^app2/manifest.json$', getStaticFileView(app='app2', 'manifest.json').as_view()),
    url(r'^app2', getStaticFileView(app='app2', 'index.html').as_view()),
]

我正在寻找这样的东西:

# settings.py
STATICFILES_MAPPING = [
    (os.path.join(APP1_DIR, 'build', 'static'), 'static/app1'),
    (os.path.join(APP2_DIR, 'build', 'static'), 'static/app2')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

# urls.py
urlpatterns = [
    url(r'^app1', getStaticFileView(app='app1', 'index.html').as_view()),
    url(r'^app2', getStaticFileView(app='app2', 'index.html').as_view()),
]

感谢任何想法或指导。

编辑:我使用静态服务器为/static提供了所有静态文件,但是我需要告诉django创建正确的/static文件结构。不只是将所有内容都放在/static文件夹中,而是要将某些内容放入/static/app1和某些/static/app2

1 个答案:

答案 0 :(得分:0)

在Burhan Khalid发表评论之后,我看了看我的静态服务器,并决定直接从/build目录提供这些文件,而不将它们复制到/static并从那里提供。