首页 > 其他分享 >Vue--POST请求和GET请求

Vue--POST请求和GET请求

时间:2024-04-24 17:55:35浏览次数:18  
标签:username 请求 -- list rest framework user import POST

1、 POST请求 (POST请求原则上都要传参数,下面介绍两种传参数的方法)

1.1 POST请求传参方法1--字典类型参数

Vue前端代码

<template>
    <form  class="form-inline panel-body" id="formData">
        <div >
            <label>账号</label>
            <input type="text" v-model="formData.username">
        </div>
        <button @click="select"> 查 找</button>
    </form>
</template>
<script setup>
    import { ref } from 'vue';
    import axios from 'axios';
    const formData = ref({
        username: '123'
    });
    async function select(event){
        event.preventDefault();
        console.log(formData);
        await axios.post('http://127.0.0.1:8000/api/select_user/',
        formData.value, ).then(res => {
            userListRef.value = res.data.user_list;
            console.log(res.data.user_list);
        })

    }
</script>

django后端代码

from rest_framework.views import APIView
#from rest_framework.response import Response
#from rest_framework.permissions import IsAuthenticated
from django.http import JsonResponse
#user表

from django.contrib.auth.models import User
from icecream import ic

class SelectUserView(APIView):
    
    #token验证(暂时先不用验证)
    #permission_classes = [IsAuthenticated]
    
    def post(self, request):
        
        #传输的数据都在request.data里面
        username=request.data.get('username')

        print('username',username)

        #此处username是唯一的,因此返回一个记录类型的对象,否则返回列表里面嵌套记录类型的对象
        users_db = User.objects.get(username=username)
        user_list=[]
        user_list.append({'id':users_db.id,'username':users_db.username,'password':users_db.password})

        print( user_list)
        return JsonResponse({'user_list': user_list})

 

1.2 post请求传参方法2--FormData类型的参数

Vue前端代码

<template>
    <form  class="form-inline panel-body" id="formDataId">
        <div >
            <label>账号</label>
            <input type="text" name="username">
        </div>
        <button @click="select"> 查 找</button>
    </form>
</template>
<script setup>
    import { ref } from 'vue';
    import axios from 'axios';

    async function select(event){
        //通过form表单的id读取form表单的数据, 此时的formData不是一个ref字典,而是应该FromData对象
        let formData = document.getElementById('formDataId');//或let formData = new FormData(document.getElementById('formDataId'));
    
        event.preventDefault();
        console.log(formData);
        await axios.post('http://127.0.0.1:8000/api/select_user/',
        formData, ).then(res => {
            userListRef.value = res.data.user_list;
            console.log(res.data.user_list);
        })

    }
</script>

 django后端代码也要对应修改

from rest_framework.views import APIView
#from rest_framework.response import Response
#from rest_framework.permissions import IsAuthenticated
from django.http import JsonResponse
#user表

from django.contrib.auth.models import User
from icecream import ic

class SelectUserView(APIView):
    
    #token验证(暂时先不用验证)
    #permission_classes = [IsAuthenticated]
    def post(self, request):
        #当前端传输的数据是FormData类型时,使用request.POST接收
        username=request.POST.get('username')#修改在此处<<<<<<<<<<<<<<<<<<<<==================================
        #username=request.data.get('username')

        print('username',username)

        #此处username是唯一的,因此返回一个记录类型的对象,否则返回列表里面嵌套记录类型的对象
        users_db = User.objects.get(username=username)
        user_list=[]
        user_list.append({'id':users_db.id,'username':users_db.username,'password':users_db.password})

        print( user_list)
        return JsonResponse({'user_list': user_list})

2、GET请求

2.1 GET请求可以不传参数(不同于POST请求原则上都要传参数)

Vue的js代码

const userListRef = ref([]);
axios.get('http://127.0.0.1:8000/api/select_user/').then(res => {
    userListRef.value = res.data.user_list;
})

django后端代码 

from rest_framework.views import APIView
#from rest_framework.response import Response
#from rest_framework.permissions import IsAuthenticated
from django.http import JsonResponse

#User表
from django.contrib.auth.models import User
from icecream import ic

class SelectUserView(APIView):
    
    #token验证(暂时不用)
    #permission_classes = [IsAuthenticated]

    def get(self, request):
        users_db=User.objects.all()
        user_list=[]
        for user in users_db:
            user_list.append({'id':user.id,'username':user.username,'password':user.password})
        print(user_list)
        return JsonResponse({'user_list': user_list})

 2.1 GET请求也可以传参数

Vue的js代码

<template>
    <form  class="form-inline panel-body" id="formDataId">
        <div >
            <label>账号</label>
            <input type="text" v-model="username">
        </div>
        <button @click="select"> 查 找</button>
    </form>
</template>
<script setup>
    import { ref } from 'vue';
    import axios from 'axios';
    let username = ref('');

    let params = {};
    async function select(event){
        event.preventDefault();
        await axios.get('http://127.0.0.1:8000/api/select_user/',
        {
        params: {
          username: username.value
        }
        },
        ).then(res => {
            userListRef.value = res.data.user_list;
            console.log(res.data.user_list);
        })

    }
</script>

 django后端代码

from rest_framework.views import APIView
#from rest_framework.response import Response
#from rest_framework.permissions import IsAuthenticated
from django.http import JsonResponse
#user表

from django.contrib.auth.models import User
from icecream import ic

class SelectUserView(APIView):
    
    def get(self, request):

        #传输的数据都在request.GET里面
        username=request.GET.get('username')
        print('username',username)

        #此处username是唯一的,因此返回一个记录类型的对象,否则返回列表里面嵌套记录类型的对象
        users_db = User.objects.get(username=username)
        user_list=[]
        user_list.append({'id':users_db.id,'username':users_db.username,'password':users_db.password})

        print( user_list)
        return JsonResponse({'user_list': user_list})

 

标签:username,请求,--,list,rest,framework,user,import,POST
From: https://www.cnblogs.com/tytbook/p/18156023

相关文章

  • 新手下载python和anaconda3注意事项
    新手下载python和anaconda3要注意哪些1、python关于python下载其实很简单,直接在官网下载就行。官网:WelcometoPython.org当然,到了官网下载是默认最新版本,如果你需要旧版本,那就需要找一下了,这里提供一下windows的各版本的官网链接:PythonReleasesforWindows|Python.org......
  • 如何基于 React 实现的指令
    我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:信居前言实现这个功能的想法,来源于数栈产品中开发的前端功能权限控制,相信大家都在项目中或多或少的接触和开发过这个功能。笔者在项目......
  • window下使用vscode和mingw搭建cpp开发环境
    window下使用vscode和mingw搭建cpp开发环境1.下载安装MinGWMinGW是一款在Windows平台上运行的GNU工具集,它提供了一套构建应用程序的开发工具,包括GNUC/C++编译器、GDB调试器、GNU二进制工具等。它可以用于开发Windows应用程序,也可以用于开发跨平台的应用程序。MinGW的全称是Mi......
  • 实现ALV页眉页脚
    1、文档介绍在ALV中,可以通过增加页眉和页脚,丰富ALV的展示。除了基本的页眉和页脚,还可以通过插入HTML代码的方式展示更加丰富的页眉和页脚,本篇文章将介绍ALV和OOALV中页眉页脚的使用。2、ALV页眉页脚2.1、显示内容效果如下页眉和页脚,都通过函数REUSE_ALV_COMMENTARY_WRITE显......
  • 安防监控/智能分析EasyCVR视频汇聚平台海康/大华/宇视摄像头国标语音GB28181语音对讲
    一、背景分析近年来,国内视频监控应用发展迅猛,系统接入规模不断扩大,涌现了大量平台提供商,平台提供商的接入协议各不相同,终端制造商需要给每款终端维护提供各种不同平台的软件版本,造成了极大的资源浪费。各地视频大规模建设后,省级、国家级集中调阅,对重特大事件通过视频掌握现场并进......
  • CentOS 系统常用命令详解
    前言CentOS是一种基于Linux内核的开源操作系统,广泛应用于服务器环境和个人电脑中。在使用CentOS进行系统管理和维护时,掌握一些常用的命令是至关重要的。本文将介绍一些在CentOS中经常使用的命令,帮助你更好地管理和操作系统。ls-列出文件和目录ls命令用于列出当前......
  • 云打印为什么这么便宜?
    随着云打印的火热发展,越来越多的用户开始选择云打印服务了。我们在之前的内容里也介绍过,现在的易绘创云打印服务A4低至5分钱/页。那么云打印为什么这么便宜呢?今天小易就带大家来了解一下。 云打印为什么这么便宜?相信很多用户在第一次接触到易绘创云打印服务的时候总会被A4低......
  • 【产研测类】线上问题处理机制
    1   概述本规范致力于优化运营与产研团队在线问题管理的效率与效果,全面覆盖生产问题的识别、处理机制、分类分级、责任归属和明确奖惩机制。同时,侧重资源重点解决主流程关联的核心模块生产问题。如此,确保各个环节责任到人,内容详实,助力团队高效协同。2  线上问题2.1 线上......
  • ETL中元数据处理的方式
    ETLCloud平台是用于处理从数据抽取、转换、加载到持续数据捕获等一系列数据管理活动。除此之外还支持微服务治理与快速开发,并且具备数据库监听功能,能够以不同的方式监听并同步源数据库表数据到目标系统,比如直接传输、通过ETL流程处理或者传输到消息队列如Kafka等。平台具备处理反......
  • 肖sir_公司项目_汇总
    目名称:网易严选电商项目项目描述:网易严选是网易旗下原创生活类自营电商品牌,于2016年4月正式面世,是国内ODM(原始设计制造商)模式的电商。网易严选以好的生活,没那么贵"为品牌理念,覆盖10大品类,通过网易自营严选团队严格把控从原料、生产、质检、销售到售后等各个环节,与一线大牌制造商......