我有一个用file-b.ts
做的反应前端来部署我刚刚做的Config file
的生产版本。我的应用程序使用Django Rest FrameWork API后端。
如何设置要在单个服务器上部署的应用程序。有没有一种方法可以在Django中存储React Frontend并路由到它,并使来自Frontend的请求命中create-react-app
视图或端点。
部署这样的最佳策略是什么?或者最好在不同的服务器上拼装托管前端和后端更好?
基本上:如何将我的React前端构建结合到Django DRF中进行部署?
答案 0 :(得分:1)
您可以将django用作您的react应用程序的容器。 在react项目的根文件夹中运行“ npn run build”。它将生成构建目录并捆绑所有javascript文件。 将此构建文件夹放在django项目的根目录中。并在settings.py文件中进行以下更改:
this
,然后在urls.py中输入:-
STATICFILES_DIRS = (
...
os.path.join(BASE_DIR, 'build/static'),
os.path.join(BASE_DIR, 'build')
...
)
使用“ axios”或本机提取api从react应用进行api调用。
此后,每当您为django项目点击URL时,它将被重定向到react应用程序。您可以使用apache wsgi托管它。对我来说很好。
答案 1 :(得分:0)
提供静态内容(内置的React应用程序)后,我要做的是在DRF API中有入口点,该入口点具有一个模板,用于在{{1}中设置服务器上下文(如果要设置任何内容) }对象。
此外,您将需要为每个具有响应路由的端点创建一个单独的“初始化程序”脚本,并为其提供正确的选择器,您将在Django模板中提及该选择器。
URL:clientConfig
查看:
path('foobars', views.FooBarsView.as_view(), name='foobars')
模板(foobars.html):
class FooBarsView(TemplateView):
template_name = 'foobars.html'
def get_context_data(self):
return {
"client_config": {}
}
您需要在React应用程序中进行一些更改,即在{% load static from staticfiles %}
<head>
<link rel="stylesheet" href="{% static 'dist/css/foobars.css' %}"/>
</head>
<main class="foobars"></main>
<script type="text/javascript">
var clientConfig = {{ client_config|safe }};
</script>
<script type="text/javascript" src="{% static "dist/js/foobars.min.js" %}"></script>
方法中使用选择器.foobars
。
初始化器:
render