Развертывание Django + Angular на EB без использования шаблонов django в производстве - PullRequest
0 голосов
/ 15 сентября 2018

Я прочитал миллион ответов на эту тему, но не могу найти решение, которое работает.

У меня есть серверная часть 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. Какой подход лучше и как это делается?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...