首页 > 其他分享 >drf入门

drf入门

时间:2023-08-29 21:13:49浏览次数:34  
标签:入门 request --- json 格式 POST data drf

drf入门规范

1、Web开发模式

​ 1.1、前后端混合开发模式:

image-20230514233525225

​ 1.2、前后端分离开发模式

image-20230514233552329

2、API接口

# api接口:通过网络,规定了前后端信息交互规则的url链接,也就是前后端信息交互的媒介
	-https://www.baidu.com/books/--->json 格式数据--->接口 # 拿到的是json格式的数据
	-https://www.cnblogs.com/liuqingzheng/articles/17400599.html--->返回界面 # 以.html结尾所以一定是一个url

# url和api接口的区别:web、API接口和一般的url链接还是有区别的,web、API接口简单的概括有下面四大特点:
    1、url:长得像返回数据的url链接:
    https://api.map.baidu.com/place/v2/search
        
    2、请求方式:get、post、put、patch、delete
    
    3、请求参数:json或者xml格式的key:values类型的数据
        ak:6E823f587c95f0148c19993539b99295
        region:上海
        query:肯德基
        output:json
        
	4、响应结果:json、xml格式的数据
    	https://api.map.baidu.com/place/v2/search?ak=6E823f587c95f0148c19993539b99295&region=%E4%B8%8A%E6%B5%B7&query=%E8%82%AF%E5%BE%B7%E5%9F%BA&output=json
    4.1、返回数据:
        # "status":0,"message":"ok","result_type":"poi_type",
        
    5、典型的api接口
    	有URL地址、有请求方式、携带参数、返回数据格式是json或xml

3、接口测试工具postman

1693207870685

image-20230514233653942

image-20230514233708831

作业

# 1 用django写个demo--->postman测试
    -1 传用户名密码到后端,查询数据库,都对了--> 返回json格式{code:100,msg:登录成功}-->urlencoded
    -2 打印 request.POST # <QueryDict: {'username': ['jason'], 'password': ['1234']}>
    -3 打印 request.body # b'username=jason&password=1234'
    
# 2 写一个接口,可以传文件{code:100,msg:上传成功}
    -1 request.POST---->有没有取决于前端传没传数据
    -2 request.body--->小文件没事,大文件报错
    
    
# 3 扩展作业(学的好的)
    -测:json格式--->request.POST 取不到
    -request.data  默认没有--->(装饰器)--->无论前端什么格式:josn,urlencoded--->都取出来,是字典
    
    
    @xxxx
    def Index(request):
        request.data

1、用django写个demo--->postman测试

1693209877484

2、写一个接口,可以传文件{code:100,msg:上传成功}

1693218850066

-测:json格式--->request.data 默认没有--->(装饰器)--->无论前端什么格式:josn,urlencoded--->取出来,都是字典

from django.shortcuts import render, redirect, HttpResponse
from django.http import JsonResponse
from app_one import models
import json


# Create your views here.
def user_data(func):
    def inner(request, *args, **kwargs):
        # 1 如果POST中有值,直接赋值给request.data ---> urlencoded,form-data
        # 2 如果没有值:就是json格式,直接把body 序列化,给data即可
        try:
            request.data = json.loads(request.body) ----> json格式
        except:
            request.data = request.POST -----> urlencoded,form-data 格式
        return func(request, *args, **kwargs)

    return inner


@user_data
def login(request):
    if request.method == "POST":
        username = request.date.get("username")
        password = request.date.get("password")
        file = request.date.get("file")
        user_obj = models.Userinfo.objects.filter(username=username, password=password).first()
        if user_obj:
            return JsonResponse({"code": 200, "msg": "登录成功", "date": []})
        else:
            return JsonResponse({"code": 1000, "msg": "登录失败"})

总结

1、前端中不同的编码格式:
    urlencoded 在Django中:
        request.body体中:b'username=jason&password=1234'
        request.POST中可以取出来值7
    form-data 在Django中:
        request.body体中:数据部分和文件部分的拼接
        b'----------------------------160806048070386359108417\r\nContent-Disposition: form-data; name="username"\r\n\r\njason\r\n----------------------------160806048070386359108417\r\nContent-Disposition: form-data; name="password"\r\n\r\n1234\r\n----------------------------160806048070386359108417--\r\n'
        request.POST中可以取出来数据部分,文件部分要从request.FILES中取
    json格式数据 在Django中:
        request.body体中:b'{"username":"jason","password":"1234"}' 二进制形式
        request.POST中取不出来值
 2、不用pycharm创建Django项目:
	"django-admin startproject 项目名"
 3、Django中的文件对象和原来的文件对象
	-django:from django.core.files.uploadedfile import InMemoryUploadedFile
    -原生文件:_io.BufferedWriter
    -django中文件类没有继承原生文件类,但是有原生文件类所有方法

标签:入门,request,---,json,格式,POST,data,drf
From: https://www.cnblogs.com/chao0308/p/17665850.html

相关文章

  • 从入门到掌握 - 系统学习shell语言
    简介什么是shellShell是一种程序或命令行解释程序,用于解释用户直接输入的用户命令或从文件中读取的用户命令,然后将它们传递给操作系统以进行操作或处理。要注意,这个过程是解释而不编译脚本,因为计算机系统会解释它们,并且无需按执行顺序编译Shell脚本。KenThompson的sh是......
  • drf-day2
    昨日作业1用django写个demo---》postman测试1、传用户名密码到后端,查询数据库,都对了---》返回json格式{code:100,msg:登录成功}---》urlencoded2、打印request.POST3、打印request.body2写一个接口,可以长传文件{code:100,msg:上传成功}request.POST---->有......
  • draw.io快速入门(下)
    6图像和图层本章的学习内容在draw.io中创建、重命名和重新排列图层插入图片作为模板,并在顶层重建图表查看、隐藏和锁定特定图层删除图层使用图层构建图表可以让你的工作更加灵活--你可以在图表的不同视图之间切换,将相关元素分组,并保护它们在不同图层中工作时不会被修改。......
  • Redis 入门篇
    1.初始Redis1.1认识NoSQL‍NoSql可以翻译做NotOnlySql(不仅仅是SQL),或者是NoSql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库​,因此也称之为非关系型数据库。‍1.1.1结构化与非结构化‍​​1.1.2关系型与非关系型的差异存储方式......
  • 机器学习从入门到放弃:我们究竟是怎么教会机器自主学习的?
    一、前言简介我相信你一定听过一个说法,那就是机器学习模型可以被视为函数的一种表示方式。它们通常是由多个函数组成的,这些函数通过参数连接在一起。我们让机器从数据中提取模式、规律和关联,然后使用这些信息来做出预测、分类、聚类等任务。所以从本质上来说,在机器学习中我们......
  • day127-springMVC的介绍与入门
    springMVC介绍与初始化介绍MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称为实体类Bean:专门存储业务数据的,如Student、User等一类称为业务处理Bean:指Service或Dao对象,专门用于处理......
  • draw.io快速入门(上)
    1编辑图标Draw.io(现名diagrams.net)是免费的在线图形绘制工具,可用于创建各种类型的图表、流程图、组织结构图、UML图、网络拓扑图等。以下是Draw.io的一些特点和功能:免费和开源Draw.io是一个免费的工具,用户可以免费访问和使用其所有功能。并且它是开源软件,用户可以查看和......
  • 第一节 drf入门规范
    一web应用模式它是djangoweb框架,专门用来写web项目1前后端混合开发模式---》常见公司老项目-后端人员,写后端,也要写模板语法--->模板语法就是写的xx.html的Python代码-全栈开发,前后端都写 2前后端分离开发模式---》新项目,时下比较流行-后端不用写前端,只需要写接......
  • 【C++STL基础入门】vector运算和遍历、排序、乱序算法
    @TOC前言C++标准库提供了丰富的容器和算法,其中vector是最常用的容器之一。它以动态数组的形式存储元素,并提供了许多方便的运算符和算法来操作和处理数据。本文将介绍vector的基本运算、遍历方法、排序算法以及乱序算法。通过学习这些内容,您将能够更加灵活、高效地使用vector容器。......
  • Java快速入门
    网上有很多的相关资料,这里也就不做过多概念的论述了本人电脑:目前使用win11,内存64,处理器12900hJava简介Java由詹姆斯高斯林开发,原本归属于SUN公司(斯坦福网络),后来SUN公司被Oracle(甲骨文)收购,目前版本归属于Oracle,现在的java版本已经很多了,目前市面上使用......