我已经读过一百万个答案,但是找不到有效的解决方案。
我有一个用于所有API调用的Django DRF后端,还有一个单独的Angular(5)前端项目。 Django后端已部署到Elastic Beanstalk,并且工作正常。
我要做的就是部署有角度的前端,而无需将模板标签添加到html中。更好的是,我不想更改内置的dist Angular文件夹中的任何内容。
我看到有几种方法-据我所知,最好的方法是通过常规Django url提供index.html,然后公开所有dist文件夹(静态文件)。
我使用以下方法实现了第一部分:
urlpatterns += [
url(r'^$', TemplateView.as_view(template_name='index.html')),
url(r'^(?P<path>.*)/$', TemplateView.as_view(template_name='index.html')),
]
,然后在settings.py中将dist文件夹定义为模板文件夹:
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存储桶以容纳所有静态文件。当我部署代码并将所有静态文件(包括dist中的文件)放置在s3上的正确位置时,'collectstatic'运行,因为我添加了以下代码:
STATICFILES_DIRS = [
ANGULAR_APP_DIR,
]
我无法弄清楚如何从基本URL(“ /”)提供所有其他静态文件(js,css资产),这是Angular应用程序期望其进入的位置。
我不确定是否应该尝试通过Django url将调用重定向到s3存储桶,或者是否应该与s3上的路由完全与Django分开。 什么是更好的方法,如何完成?
谢谢!