【发布时间】:2018-12-12 23:52:44
【问题描述】:
我创建了一个可用的 React + Django REST 项目,它在我的开发机器上运行良好。我已使用以下方法使其在我的 CentOS 7 服务器上运行。
我使用
npm run build创建了构建目录并将其复制到 Django 项目根文件夹。我在 Django 设置的 TEMPLATES 列表中添加了
build目录,以识别index.html文件。我在
STATICFILES_DIRS中添加了build/static文件夹。我在根
URLS文件中添加了url(r'^.*', TemplateView.as_view(template_name='index.html')),行以捕获所有 url 模式并将索引文件加载到包含 React 应用程序的构建文件夹中。我运行
manage.py collectstatic来创建一个包含所有静态文件的staticfiles文件夹。-
我将
staticfiles文件夹添加到 Nginx conf 文件中,如下所示:location /static/ { root /home/michel/project/staticfiles; } 我已经重启了nginx服务器。
我正在使用 Django 服务器加载 index.html 文件,我希望 staticfiles 文件夹将包含加载我的 React 应用程序所需的静态文件。
但是,当我访问 www.mydomain.com 时,它会加载 index.html 文件,但不会在 <div id='root'></div> 上加载 React 应用程序。我知道这一点是因为显示了索引的页脚,但用于设置该页脚样式的 css 也不起作用。
我猜我在检测静态文件时遇到了问题。有什么解决办法吗?
编辑 这是将我的 React 应用程序链接到 index.html 文件的代码。
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
ReactDOM.render(<App />, document.getElementById('root'));
registerServiceWorker();
附:由create-react-app 命令自动生成。
【问题讨论】:
-
贴出TemplateView和index.html header的代码
-
@DmitriiG。 TemplateView 就是我在 urls 文件中使用的那一行。加载索引文件。我已使用索引文件
<head>标记和其中包含的代码更新了问题。 -
这对我来说没有任何意义。加载 react 应用的代码在哪里?
-
我使用
create-react-app来创建我的前端。因此,将应用程序加载到 ID 为root的 div 的默认代码用于将我的应用程序加载到该 div。请注意,当我使用gunicorn bind ...运行服务器以检查 Gunicorn 时,该应用程序运行良好。 -
您真的需要帮助吗?我已经问过你两次了,用 django 静态文件路径将你的 react javascript 应用程序代码链接到 index.html 文件中
标签: django reactjs rest django-rest-framework