📅  最后修改于: 2023-12-03 15:09:05.807000             🧑  作者: Mango
如果你在使用 Django 来构建网站,但是想要使用 Reactjs 来处理前端的交互和展示,那么你就需要将这两个框架连接起来。这篇文章将介绍如何将 Django 和 Reactjs 连接起来,同时提供一些有用的技巧和代码片段。
在将 Django 和 Reactjs 连接起来之前,你需要确保这两个框架都已经被安装在了你的计算机上。如果你还没有安装这些框架,你可以按照下面的指南来进行安装。
如果你还没有安装 Django,可以按照以下步骤进行安装:
pip install Django
django-admin --version
如果你还没有安装 Reactjs,可以按照以下步骤进行安装:
安装 Node.js 和 npm。你可以通过以下链接来下载适合你的操作系统的 Node.js 和 npm:
在终端或命令行窗口中输入以下命令来安装 create-react-app:
npm install -g create-react-app
create-react-app my-app
在将 Django 和 Reactjs 连接起来之前,你需要在 Django 项目中进行一些设置。
django-admin startproject myproject
cd myproject
python manage.py startapp myapp
djangorestframework
django-cors-headers
pip install -r requirements.txt
在 Django 中设置 CORS (Cross-Origin Resource Sharing) 是十分必要的,它允许你在不同的域名下共享资源。为此,你需要在项目的 settings.py 文件中进行设置。
INSTALLED_APPS = [
#...
'corsheaders',
#...
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware', # 在这里添加
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ORIGIN_ALLOW_ALL = True
这将允许来自任何来源的请求都可以访问你的 Django API。
现在,你需要将 Reactjs 应用程序添加到 Django 项目中,并与 Django 项目进行连接。下面的步骤将演示如何将 Reactjs 应用程序添加到 Django 项目中。
npm run build
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My App</title>
</head>
<body>
<div id="root"></div>
<script src="{% static 'js/bundle.js' %}"></script>
</body>
</html>
from django.shortcuts import render
def index(request):
return render(request, 'index.html')
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
现在,你已经可以打开 Django 项目的主页,在浏览器中输入 http://127.0.0.1:8000/,就可以看到 Reactjs 的应用程序在其中运行了。如果一切正常,你应该可以看到你的应用程序的主页。
在连接 Django 和 Reactjs 之后,你需要使用 Django REST Framework 来创建一个后端 API,以便在 Reactjs 应用程序中使用。
pip install djangorestframework
INSTALLED_APPS = [
#...
'rest_framework',
#...
]
from rest_framework import serializers, viewsets
from .models import MyModel
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
from django.urls import include, path
from rest_framework import routers
from myapp.api import MyModelViewSet
router = routers.DefaultRouter()
router.register(r'mymodels', MyModelViewSet)
urlpatterns = [
path('api/', include(router.urls)),
# ...
]
完成以上步骤后,你的 Django 和 Reactjs 应用程序已经连接成功,你可以开始开发你的应用程序了。上面提到的方法只是其中的一种,你可以通过其他的方式来连接 Django 和 Reactjs。
代码片段:
import React from 'react'
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
items: []
};
}
componentDidMount() {
fetch('/api/mymodels')
.then(response => response.json())
.then(responseData => {
this.setState({
items: responseData
});
});
}
render() {
return (
<div>
<h1>Items</h1>
<ul>
{this.state.items.map(item => (
<li key={item.id}>{item.name}</li>
))}
</ul>
</div>
);
}
}
export default App;