Я прочитал миллион ответов на эту тему, но не могу найти решение, которое работает.
У меня есть серверная часть Django DRF, которая используется для всех вызовов API, и отдельный внешний интерфейс Angular (5). Серверная часть Django развернута в Elastic Beanstalk и работает правильно.
Все, что я хочу сделать, это развернуть угловой интерфейс без необходимости добавлять теги шаблонов в htmls. Еще лучше, я не хочу ничего менять во встроенной папке dist Angular.
Я вижу, что есть несколько подходов. Насколько я понимаю, лучше всего было бы обслуживать index.html через обычный URL-адрес Django, а затем предоставлять всю папку dist (статические файлы).
Я достиг первой части, используя:
urlpatterns += [
url(r'^$', TemplateView.as_view(template_name='index.html')),
url(r'^(?P<path>.*)/$', TemplateView.as_view(template_name='index.html')),
]
и определение папки dist в качестве папки шаблона в settings.py:
ANGULAR_APP_DIR = os.path.join(BASE_DIR, 'client/dist')
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [ANGULAR_APP_DIR],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.template.context_processors.i18n',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
В настоящее время я определяю корзину s3 для хранения всех статических файлов. «collectstatic» запускается при развертывании кода и размещает все статические файлы в правильном месте на s3, включая файлы в dist, потому что я добавил это:
STATICFILES_DIRS = [
ANGULAR_APP_DIR,
]
Я не могу понять, как обслуживать все другие статические файлы (js, css assets) из базового url ("/"), в котором находится приложение Angular, ожидающее его.
Я не уверен, стоит ли мне пытаться перенаправить вызовы через URL-адреса Django в корзину s3 или я должен делать это полностью отдельно от Django с маршрутами на s3.
Какой подход лучше и как это делается?
Спасибо!