前言:上回做完了前端像后端表单传递数据,现在轮到后端传递数据

实现效果

        前后端都要运行

一. 配置说明

        需要axios库,DjangoRestFramework,django,vuecli,djangocorsheaders

        1.Vue安装代理门
        2.django安装代理门
        3.axios安装注册
        注册 
        4.drf,corsheaders安装注册
        注册
# settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'toResponse', # 你注册app 名称
    'corsheaders', # 加上
]

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware', #加上
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    #'django.middleware.csrf.CsrfViewMiddleware', # 注释掉
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

二.Vue 端设立组件getAxios

        1.设立index.vue 作为views文件
                1.views内容
// HTML部分
<template&gt;
    <div&gt;
        <get-axios/&gt;
    </div&gt;
</template&gt;
// js 部分
<script&gt;
    import getAxios from '../components/getAxios';
    export default {
        components: {
            getAxios // 使用getAxios组件
        },
        data() {
            return {
            
            }
        }
    }

</script>
        2.在router定义
//router目录下的 index.ts
import index from '@/views/index.vue'

const routes: Array<RouteRecordRaw> = [
  {
    path: '/',
    name: 'index',
    component: index,
  },

]
        3.在components新建文件 getAxios.vue
//HTML部分
<template>
    <div >
        <button class="btn btn-primary" v-on:click="initCourse()">getaxios</button>
    </div>
</template>
// js部分
<script>
    export default {
        name: "getAxios",
        data() {
            return {
                file: {}, // 文件对象,最终会上传到该对象中
            }
        },
        methods: {
            initCourse:function(){
                var that = this; // 在axios 中this指向会变,将vm 对象用that保留
                console.log(that.$url + "course/") // 显示 http://127.0.0.1:8000/course/
                this.$axios.request({
                    url:that.$url + "course/",
                    method:"GET"
                }).then(function(ret){
                //ajax请求发送成功获取请求
                    console.log( ret.data);
                    that.file = ret.data;
                    return ret.data;
                
                }).catch(function(ret){
                //失败或者异常之后的内容
                    console.log(ret)
                })
            }
        }
    }
</script>

 三.django 端进行响应

        1.settings 剩余准备工作(ps: rear 是我的项目根目录,toResponse是实现响应app)
# settings.py
import os
# 下面这些话放在文件末尾
JSON_FILE_PATH = os.path.join(BASE_DIR , 'rearjson') # 定义读取文件路径
# 设立白名单 运行http://localhost:8080 端访问
CORS_ORIGIN_WHITELIST = [
    'http://localhost:8080',
]
        2.在 rear 文件夹下的rear 文件夹放置你的json文件夹里面放置自己json文件(有点小绕)

        3.views准备工作
# toResponse 下的 views.py

from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from django.http import JsonResponse
from rear import settings
# Create your views here.
class DataTest(APIView):
    def get(self, request, *args, **kwargs):
        data = getjson()
        return JsonResponse(data,safe=False)

def getjson():
    files = []
    with open(settings.JSON_FILE_PATH + "红楼梦.json","r",encoding='utf-8') as f:
        data = f.read() # 读取目录下的红楼梦.json文件,可自己return data
        4.urls 放置
# rear目录下的 urls.py
from django.contrib import admin
from django.urls import path
from toResponse import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('course/', views.DataTest.as_view()),
]

原文地址:https://blog.csdn.net/sw_dl/article/details/132661718

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_45652.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注