Django,创建反应应用程序,Heroku

Posted

技术标签:

【中文标题】Django,创建反应应用程序,Heroku【英文标题】:Django, Create-react-app, Heroku 【发布时间】:2017-09-28 10:09:03 【问题描述】:

我在 Django Web 应用程序中有 3 个文件夹。文件夹如下:settings.py(project)文件夹,models.py(application)文件夹,create-react-app创建的前端react应用文件夹。

我想构建 react 前端,将构建工件复制到一个静态文件夹中,然后在 heroku 上运行 django 应用程序,但是他们使这个过程在我当前的文件夹结构中几乎是不可能的。另一种方法是将 React 应用程序扁平化,并在项目的根目录中包含 build、src、node_modules、packagejson 等,但这似乎真的很糟糕。

settings.py 中的一些配置:

STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static'),
os.path.join(BASE_DIR, 'front-end/build/static')

)

我在前端本地运行的内容:

npm run build

我从视图中返回的内容:

def index(request):

    return HttpResponse(loader.get_template('build/index.html').render())
    #above line returns index.html that is generated by npm run build

如何将上述项目部署到 Heroku,以便它可以找到所有静态资源?

【问题讨论】:

真可怜,没人回答。我对 Ruby 也有类似的问题。 @EddeAlmeida for Rails 我发现了这两个不错的教程(我想将它们转移到 Django 来回答这个问题……)——fullstackreact.com/articles/… 和 medium.com/superhighfives/… 【参考方案1】:

您可以使用symlink 链接将您的反应构建输出放入您的 django 目录

例如,如果你的目录结构是这样的:

~/project_root/
~/project_root/django/static/
~/project_root/my_react_app/build

cd 到 ~/project_root/django/static/ 并运行

ln -s ../../my_react_app/build .

这将创建指向~/project_root/my_react_app/build~/project_root/django/static/build

【讨论】:

以上是关于Django,创建反应应用程序,Heroku的主要内容,如果未能解决你的问题,请参考以下文章

创建 Heroku Django 应用程序后同步数据库的问题

Heroku django 应用程序创建超级用户

从 django 静态文件提供服务并上传到 heroku 时无法找到反应静态文件

在heroku中反应+ django部署并且图像没有通过

在 Heroku 上部署现有的 Django 应用程序

在 Heroku 上部署 Django API + React 应用程序