Vue.js 是一个流行的前端 JavaScript 框架,用于构建用户界面和单页应用程序。Django 是一个高级的 Python Web 框架,它鼓励快速开发和干净、实用的设计。将 Vue.js 与 Django 结合使用,可以创建强大的全栈应用程序,其中 Django 处理后端逻辑和数据库交互,而 Vue.js 负责前端的动态交互。
Vue.js:
Django:
首先,创建一个新的 Django 项目和应用:
django-admin startproject myproject
cd myproject
django-admin startapp myapp
在 myapp/views.py
中创建一个简单的视图:
from django.http import JsonResponse
def hello_world(request):
return JsonResponse({'message': 'Hello, World!'})
配置 URL 路由,在 myproject/urls.py
中添加:
from django.urls import path
from myapp.views import hello_world
urlpatterns = [
path('api/hello/', hello_world, name='hello_world'),
]
安装 Vue CLI 并创建一个新的 Vue 项目:
npm install -g @vue/cli
vue create my-vue-app
cd my-vue-app
在 src/App.vue
中创建一个组件来调用 Django API:
<template>
<div id="app">
<h1>{{ message }}</h1>
</div>
</template>
<script>
import axios from 'axios';
export default {
name: 'App',
data() {
return {
message: ''
};
},
mounted() {
axios.get('/api/hello/')
.then(response => {
this.message = response.data.message;
})
.catch(error => {
console.error('There was an error!', error);
});
}
};
</script>
确保 Vue.js 应用程序可以通过 Django 提供的静态文件服务访问。在 Django 的 settings.py
中配置静态文件路径:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'my-vue-app/dist'),
]
并在 urls.py
中添加静态文件服务的路由:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
问题: 前端无法正确调用后端 API。
原因: 可能是由于跨域资源共享(CORS)问题,或者是 API 路径不正确。
解决方法:
django-cors-headers
库来解决 CORS 问题。安装 django-cors-headers
:
pip install django-cors-headers
在 settings.py
中配置:
INSTALLED_APPS = [
...
'corsheaders',
...
]
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
...
]
CORS_ORIGIN_ALLOW_ALL = True # 或者指定允许的域名列表
这样,Vue.js 应用就可以正确地与 Django 后端进行通信了。