当前位置:首页 > 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中实现盖章功能通常涉及前端UI交互,通过Canvas或SVG绘制印章,并允许用户拖拽或点击放置印章。以下是具体实现方法: 使用Canvas绘制印章 通过HTML5的Ca…

vue拖动实现

vue拖动实现

实现 Vue 拖动功能的方法 使用 HTML5 拖放 API 在 Vue 中可以利用 HTML5 的原生拖放 API 实现拖动功能。通过 draggable 属性标记可拖动元素,结合 @dragsta…

vue实现拖拉

vue实现拖拉

实现拖拽功能的基本步骤 在Vue中实现拖拽功能可以通过原生HTML5的拖放API或第三方库如vuedraggable完成。以下是两种方法的详细说明。 使用HTML5原生拖放API HTML5提供了原…

vue 实现图片

vue 实现图片

Vue 实现图片加载与展示的方法 在 Vue 中实现图片加载和展示可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind 绑定图片路径 通过 v-bind(或简写为 :)动态绑定图片的…

vue实现座位

vue实现座位

Vue实现座位布局 使用Vue实现座位布局可以通过组件化和响应式数据管理来简化开发流程。以下是一个完整的实现方案: 数据准备 定义座位数据结构,通常使用二维数组表示行列关系: data() {…

vue实现登录退出

vue实现登录退出

实现登录功能 在Vue中实现登录功能通常需要结合表单验证、API请求和状态管理。以下是一个基础实现示例: 安装必要依赖(如axios和vuex): npm install axios vuex 创…