当前位置:首页 > VUE

django vue实现

2026-02-10 01:13:13VUE

Django 与 Vue.js 集成实现

后端配置 (Django)

在 Django 项目中创建 API 接口,使用 Django REST framework 提供数据支持。安装依赖:

pip install djangorestframework django-cors-headers

配置 settings.py

INSTALLED_APPS = [
    ...
    'rest_framework',
    'corsheaders',
]

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    ...
]

CORS_ORIGIN_ALLOW_ALL = True  # 开发时允许所有跨域请求

创建序列化器和视图:

# serializers.py
from rest_framework import serializers
from .models import YourModel

class YourModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = YourModel
        fields = '__all__'

# views.py
from rest_framework import viewsets
from .models import YourModel
from .serializers import YourModelSerializer

class YourModelViewSet(viewsets.ModelViewSet):
    queryset = YourModel.objects.all()
    serializer_class = YourModelSerializer

配置路由:

# urls.py
from rest_framework.routers import DefaultRouter
from .views import YourModelViewSet

router = DefaultRouter()
router.register(r'api/yourmodel', YourModelViewSet)

urlpatterns = [
    ...
] + router.urls

前端配置 (Vue.js)

初始化 Vue 项目:

django vue实现

vue create frontend
cd frontend
npm install axios vue-router

配置 API 调用:

// src/api.js
import axios from 'axios'

const api = axios.create({
    baseURL: 'http://localhost:8000',  // Django 开发服务器地址
    timeout: 5000
})

export default {
    getData() {
        return api.get('/api/yourmodel/')
    },
    postData(data) {
        return api.post('/api/yourmodel/', data)
    }
}

创建 Vue 组件:

<!-- src/components/DataList.vue -->
<template>
    <div>
        <ul>
            <li v-for="item in items" :key="item.id">
                {{ item.name }}
            </li>
        </ul>
    </div>
</template>

<script>
import api from '../api'

export default {
    data() {
        return {
            items: []
        }
    },
    async created() {
        try {
            const response = await api.getData()
            this.items = response.data
        } catch (error) {
            console.error(error)
        }
    }
}
</script>

部署方案

开发模式分离部署

django vue实现

  • Django 运行在 http://localhost:8000
  • Vue 运行在 http://localhost:8080
  • 通过 CORS 处理跨域请求

生产环境整合部署

  1. 构建 Vue 项目:
    npm run build
  2. dist 目录内容复制到 Django 的静态文件目录
  3. 配置 Django 的 urls.py
    
    from django.views.generic import TemplateView

urlpatterns = [ ... path('', TemplateView.as_view(template_name='index.html')), ]


#### 高级集成方案

使用 `django-webpack-loader` 实现热重载:
1. 安装依赖:
```bash
pip install django-webpack-loader
npm install webpack-bundle-tracker --save-dev
  1. 配置 webpack.config.js
    
    const BundleTracker = require('webpack-bundle-tracker')

module.exports = { output: { publicPath: 'http://localhost:8080/', path: path.resolve('./frontend/dist/'), }, plugins: [ new BundleTracker({filename: './webpack-stats.json'}) ] }


3. Django 配置:
```python
# settings.py
WEBPACK_LOADER = {
    'DEFAULT': {
        'BUNDLE_DIR_NAME': 'bundles/',
        'STATS_FILE': os.path.join(BASE_DIR, 'webpack-stats.json'),
    }
}

标签: djangovue
分享给朋友:

相关文章

vue实现缩放

vue实现缩放

Vue 实现缩放的方法 在 Vue 中实现缩放功能可以通过多种方式完成,以下是一些常见的方法: 使用 CSS transform 属性 通过 CSS 的 transform: scale() 属性…

vue实现mouseout

vue实现mouseout

Vue 实现 mouseout 事件的方法 在 Vue 中实现 mouseout 事件可以通过多种方式完成,以下是几种常见的方法: 使用 v-on 指令 Vue 提供了 v-on 指令(或简写为 @…

vue实现Siri

vue实现Siri

Vue 实现 Siri 风格语音交互 实现类似 Siri 的语音交互功能需要结合语音识别、语音合成和前端交互逻辑。Vue 作为前端框架,可以很好地管理这些功能的交互状态。 语音识别集成 使用 Web…

vue实现swiper

vue实现swiper

Vue 中实现 Swiper 的方法 安装 Swiper 依赖 在 Vue 项目中安装 Swiper 和相关依赖: npm install swiper vue-awesome-swiper 全局引…

实现vue框架

实现vue框架

Vue框架的基本实现 Vue是一个渐进式JavaScript框架,用于构建用户界面。以下是实现Vue框架的基本步骤: 安装Vue 通过CDN引入Vue是最简单的方式: <script src…

vue实现日历

vue实现日历

Vue 实现日历的基本方法 使用 Vue 实现日历可以通过自定义组件或借助第三方库完成。以下是两种常见实现方式: 自定义日历组件 创建基于 Vue 的日历组件需要处理日期计算和渲染逻辑。核心是生成当…