在当今互联网飞速发展的时代,全栈开发变得越来越受到人们的关注,而Vue3和Django4作为前后端技术的代表,其结合使用也变得越来越流行。在本文中,我们将详细介绍如何搭建一个Vue3+Django4的全栈应用。
1. 环境搭建
在开始项目前,我们需要先配置好开发环境。下面是我们所需的环境:
首先,需要安装 Node.js 和 npm ,这是我们使用Vue3所必需的。安装完成后,我们可以通过以下代码验证是否已经安装成功:
node -v
npm -v
其次,需要安装 Python3 和 Django4,这是我们后端所必需的。安装完成后,我们可以通过以下代码验证是否已经安装成功:
python3 -V
python3 -m django --version
以上环境都安装好之后,我们就可以开始搭建我们的全栈应用了。
2. 创建Vue3项目
在开始创建Vue3应用时,我们需要先安装Vue CLI。我们可以使用以下命令安装:
npm install -g @vue/cli
安装完成后,我们就可以创建Vue3应用了。我们可以使用以下命令在命令行中创建项目:
vue create vue3-project
该命令将提示我们选择一些配置,其中包括选择Vue3版本。选择完成后,我们就可以开始开发了。
2.1 添加Vue3路由
Vue Router是Vue.js官方的路由管理器,我们可以使用它来管理和控制Vue应用程序的路由。我们可以使用以下命令安装Vue Router:
npm install vue-router@4
安装完成后,我们可以开始在Vue3项目中使用路由。在src文件夹下创建router文件夹,并在其中创建index.js文件。我们可以在该文件中配置路由表:
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
}
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
export default router
以上代码中,我们使用createRouter()方法创建了一个新的路由器实例,并通过createWebHistory()方法指定了路由的基本URL。接着,我们使用routes数组配置了与其对应的路由表。最后,我们通过export default导出了路由器实例。
2.2 添加Vue3状态管理
Vue3提供了新的状态管理机制:Vuex 4。我们可以使用它来管理和控制Vue应用程序的状态,包括数据的存储、共享和变化等等。我们可以使用以下命令安装Vuex 4:
npm install vuex@next
安装完成后,我们可以在src文件夹下创建store文件夹,并在其中创建index.js文件。我们可以在该文件中配置存储器:
import { createStore } from 'vuex'
const store = createStore({
state () {
return {
count: 0
}
},
mutations: {
increment (state) {
state.count++
}
}
})
export default store
以上代码中,我们使用createStore()方法创建了一个新的存储器实例,并在其中定义了一个状态对象。接着,我们在mutations属性中定义了一个方法increment(),用于更新count属性的值。最后,我们通过export default导出了存储器实例。
3. 创建Django4应用
在开始创建Django4应用时,我们需要先安装Django4。我们可以使用以下命令安装:
pip3 install django==4.0.1
安装完成后,我们就可以创建Django4应用了。我们可以使用以下命令在命令行中创建项目:
django-admin startproject django4_project
该命令将在当前目录下创建一个名为django4_project的Django4项目。
3.1 创建Django4应用
在Django4项目中,我们需要创建一个新的应用程序。我们可以使用以下命令在命令行中创建应用程序:
python3 manage.py startapp myapp
该命令将在当前目录下创建一个名为myapp的应用程序。
3.2 编写Django4视图
在Django4应用程序中,我们需要编写视图函数来处理HTTP请求,并返回响应结果。我们可以在views.py文件中编写视图函数:
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello, Django4!")
以上代码中,我们定义了一个名为hello()的视图函数,该函数接收一个HttpRequest对象作为参数,并返回一个HttpResponse对象作为响应。
3.3 配置Django4路由
在Django4应用程序中,我们需要配置URL路由来将HTTP请求映射到相应的视图函数。我们可以在urls.py文件中配置URL路由:
from django.urls import path
from myapp.views import hello
urlpatterns = [
path('hello/', hello, name='hello'),
]
以上代码中,我们使用path()方法定义了一个URL路由,将/hello/路径映射到hello()视图函数上。
4. 配置Vue3和Django4的连接
在将Vue3和Django4连接起来之前,我们需要使用npm安装axios库,这是一个用于进行HTTP请求的第三方库。我们可以使用以下命令安装axios:
npm install axios
接着,我们可以在src/main.js文件中引入axios库:
import axios from 'axios'
const http = axios.create({
baseURL: 'http://localhost:8000/api'
})
app.config.globalProperties.$http = http
以上代码中,我们使用axios.create()方法创建了一个HTTP客户端,并指定了其基本URL为http://localhost:8000/api。接着,我们通过Vue3的全局配置系统将该HTTP客户端注入到应用程序中,以便在所有组件中都可以使用它。
4.1 在Vue3中调用Django4接口
在Vue3应用程序中调用Django4的接口时,我们可以使用以下代码:
const response = await this.$http.get('/hello/')
this.message = response.data
以上代码中,我们使用$http实例调用了/hello/接口,并将返回的数据赋值给了message属性。
4.2 在Django4中处理Vue3请求
在Django4应用程序中处理Vue3的请求时,我们需要使用Django Rest Framework,它是Django4的第三方库,用于构建RESTful Web API。我们可以使用以下命令安装Django Rest Framework:
pip3 install djangorestframework
接着,我们可以在Django4应用程序中创建serializers.py文件:
from rest_framework import serializers
class MessageSerializer(serializers.Serializer):
message = serializers.CharField()
以上代码中,我们定义了一个名为MessageSerializer的序列化器,用于序列化消息对象。
接着,我们可以在views.py文件中编写视图函数:
from rest_framework import status
from rest_framework.response import Response
from rest_framework.decorators import api_view
from myapp.serializers import MessageSerializer
@api_view(['GET'])
def hello(request):
message = {'message': 'Hello, Django4!'}
serializer = MessageSerializer(message)
return Response(serializer.data, status=status.HTTP_200_OK)
以上代码中,我们使用@api_view()装饰器定义了一个名为hello()的视图函数,该函数接收一个HttpRequest对象作为参数,并使用MessageSerializer序列化器将消息对象序列化为JSON格式。最后,我们使用Response对象返回JSON数据。
5. 其他配置
为了使我们的Vue3应用程序能够无缝集成到Django4应用程序中,我们还需要进行其他一些配置。
5.1 静态文件配置
在Vue3应用程序中,我们需要使用静态文件来加载HTML、CSS和JavaScript等文件。为了使这些静态文件能够被Django4应用程序正确处理,我们需要配置Django4的静态文件处理器。我们可以在settings.py文件中添加以下代码:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'vue3-project/dist'),
]
以上代码中,我们将Vue3应用程序的/dist/static文件夹所在的路径添加到了STATICFILES_DIRS列表中。
5.2 模板配置
在Django4应用程序中,我们需要使用模板来生成HTML代码。为了使Vue3应用程序能够被正确嵌入到模板中,我们需要在模板中添加以下代码:
{% load static %}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Django4 and Vue3</title>
<link href="{% static 'css/app.css' %}" rel="stylesheet">
<script src="{% static 'js/chunk-vendors.js' %}"></script>
<script src="{% static 'js/app.js' %}"></script>
</head>
<body>
<div id="app"></div>
</body>
</html>
以上代码中,我们使用{% load static %}指令加载了静态文件处理器,并使用{% static %}指令引用了Vue3应用程序的CSS、JavaScript文件。最后,我们在
标签中添加了一个id为“app”的div元素,用于将Vue3应用程序嵌入到模板中。6. 总结
通过本文,我们了解了如何搭建一个Vue3+Django4的全栈应用,并在其中使用了Vue Router、Vuex 4、Django Rest Framework等技术。希望本文对于初学者对全栈开发有所帮助。