【发布时间】:2019-02-17 09:19:48
【问题描述】:
自学如何将 React 前端与 Django 服务器一起使用,但我很难让 React 路由正常工作。每当我重新加载页面时,它都会认为我正在向服务器发出 GET 请求。在 localhost:8000 刷新工作正常,但除了 API 路由错误之外的任何内容。
很确定问题出在我的一个 urls.py 文件中。
quiz_app/urls.py
urlpatterns = [
path('', include('quizzes.urls')),
path('', include('frontend.urls'))
]
frontend/urls.py
urlpatterns = [
path('', views.index )
]
quizzes/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path(r'^nested_admin/', include('nested_admin.urls')),
re_path('api/quizzes/', views.QuizList.as_view()),
re_path('api/quizzes/<str:name>/', views.SingleQuiz.as_view()),
re_path('api/questions/', views.QuestionList.as_view()),
re_path('api/answers/', views.AnswerList.as_view())
]
为了更好的衡量:
frontend/views.py
def index(request):
return render(request, 'frontend/index.html')
frontend/src/App.js
class App extends Component {
render() {
return (
<Router>
<div className="App">
<Grid>
<Header />
<Route exact path="/" component={Quizzes} />
<Route exact path="/:name" component={Quiz} />
</Grid>
</div>
</Router>
)
}
};
重申一下,问题在于 App.js 中的 "/:name" 路由试图向 Django 服务器发出“GET”请求并出错,因为没有什么可以处理它们,而不是默认使用 React 路由。让我知道我在这里做错了什么。在将 React 与其他服务器框架一起使用时,我已经解决了这个问题,但我是 Python/Django 的新手,所以不知道从哪里开始。
【问题讨论】:
-
什么库定义了路由器组件?通常在前端框架(如(angular,react,vue)中,路由器只处理(客户端)中的te调用并为每个路由绘制正确的组件,因此您需要一个像服务一样工作的组件,然后调用后端 API。
-
我正在使用 react-router-dom。抱歉,如果我的问题措辞有误,但这就是我正在做的事情。服务器调用由不同的组件处理,问题在于它们都在同一个端口中。如果 API 不存在,我想要让浏览器搜索反应路线,就像你如何使用 Webpack 设置反应/节点应用程序一样。相反,它只是出错了。
-
在我的 urls.py 文件中未指定的任何地方刷新页面之前,我都没有遇到问题。
标签: django reactjs webpack django-rest-framework