部署独立的React Frontend和Django DRF API

时间:2018-11-28 10:30:39

标签: django reactjs create-react-app amazon-elastic-beanstalk

我有一个用file-b.ts做的反应前端来部署我刚刚做的Config file的生产版本。我的应用程序使用Django Rest FrameWork API后端。

如何设置要在单个服务器上部署的应用程序。有没有一种方法可以在Django中存储React Frontend并路由到它,并使来自Frontend的请求命中create-react-app视图或端点。

部署这样的最佳策略是什么?或者最好在不同的服务器上拼装托管前端和后端更好?

基本上:如何将我的React前端构建结合到Django DRF中进行部署?

2 个答案:

答案 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托管它。对我来说很好。

以下链接可能有帮助: https://medium.com/alpha-coder/heres-a-dead-simple-react-django-setup-for-your-next-project-c0b0036663c6

答案 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