同样,DRF建议使用封装过的Response来返回HTTP响应,使用该类构造响应对象时,响应的具体数据内容会被转换(render渲染)成符合前端需求的类型。...Request.data Request对象的数据是自动根据前端发送数据的格式进行解析之后的结果。这样后端使用统一的方式来获取数据,无论前端传递的是表单,json还是其它格式。...) 包含了对POST、PUT、PATCH请求方式解析后的数据; 利用了REST framework的parsers解析器,不仅支持表单类型数据,也支持JSON数据。...无论请求方式是什么,URL中的参数,我们在DRF中总是使用request.query_params来获取。...不过DRF官方还是建议我们对继承自APIView类或使用@api_view进行装饰的函数,都返回Response对象。 使用了Response对象返回,默认会带有一定的样式。
其中最核心的属性是request.data,它和request.POST的区别如下: request.POST # 只处理表单(Form)数据,只支持POST方法 request.data # 处理任何数据...,支持POST、PUT、PATCH方法 Response DRF的Response继承自Django的django.template.response.SimpleTemplateResponse: ?...,是不容易阅读的,于是DRF提供了标识符如HTTP_400_BAD_REQUEST来替代。...它们提供了一些新功能,比如: 检查请求是Request对象 添加上下文到Response对象 返回请求错误如405 Method Not Allowed 当request.data格式有误时,抛出ParseError...提供了可视化的API HTML文档,把API URL在浏览器中打开即可看到: ?
= BookInfo fields = '__all__' model 指明该序列化器处理的数据字段从模型类BookInfo参考生成 fields 指明该序列化器包含模型类中的哪些字段...运行测试 python manage.py runserver 在浏览器中输入网址127.0.0.1:8000,可以看到DRF提供的API Web浏览页面: ?...1)点击链接127.0.0.1:8000/books/ 可以访问获取所有数据的接口,呈现如下页面: ? ? 2)在页面底下表单部分填写图书信息,可以访问添加新图书的接口,保存新书: ?...点击POST后,返回如下页面信息: ? 3)在浏览器中输入网址127.0.0.1:8000/books/1/,可以访问获取单一图书信息的接口(id为1的图书),呈现如下页面: ?...4)在页面底部表单中填写图书信息,可以访问修改图书的接口: ? 点击PUT,返回如下页面信息: ? 5)点击DELETE按钮,可以访问删除图书的接口: ? 返回,如下页面: ?
DRF的信号是基于Python标准库中的signal模块实现的。DRF中的信号通常用于以下情况:在对象创建、保存、删除等事件发生时执行某些操作。...在请求处理过程中的某些特定时间点执行某些操作,如请求前、请求后、异常处理等。DRF提供了多个信号,可以通过导入django.dispatch.Signal来访问这些信号。...以下是一个简单的示例,演示如何在对象保存时执行某些操作:from django.db.models.signals import post_savefrom django.dispatch import...这些信号可以帮助我们在请求处理过程中执行自定义的操作,如记录请求日志、检查授权等。...我们可以在log_request函数中记录请求日志,如请求时间、请求方法、请求路径等。
drf提供了Parser解析器,在接收到请求之后会根据Content-Type指明的请求数据类型(json、表单等)将请求数据进行解析,解析为类字典 对象保存到Request 对象之中...类似于Django中标准的request.POST和 request.FILES属性,但提供如下特性: 1 包含了解析之后的文件和非文件数据 2 包含了对POST、PUT、PATCH请求方式解析后的数据...3 利用了REST framework的parsers解析器,不仅支持表单类型数据,也支持JSON数据 .query_params request.query_params与Django标准的...如果前端请求中未进行Accept声明,则会采用默认方式处理响应数据,我们可以通过配置来修改默认响应格式。 可以在rest_framework.settings 查找所有的drf默认配置项。...drf 会自动使用renderer 渲染器处理该数据。
显然,数据以json的形式返回前端。...实现商品列表页的原理是: 通过DRF返回数据,基于CBV(Class-based Views, 即基于类的视图)方式编码。...serializer将数据保存到数据库中。...方法的内容POST,这意味着您可以访问PUT和PATCH请求的内容; 它支持REST框架的灵活请求解析,而不仅仅是支持表单数据。...例如,可以以处理传入表单数据的相同方式处理传入JSON数据。
它支持以下功能:请求解析:自动解析请求体中的数据(如 JSON、表单数据)。响应封装:提供 Response 对象,支持内容协商(自动根据客户端需求返回 JSON 等格式)。...request.data:获取解析后的请求体数据(支持 JSON、表单等)。...request.method: 获取 HTTP 请求方法(如 GET、POST、PUT、DELETE 等)。...request.POST: 获取请求体中的表单数据(当 Content-Type 为 application/x-www-form-urlencoded 或 multipart/form-data 时)...此端点返回一个示例数据对象。
中带数据 -修改-----》put,patch--->实际编码中,基本都用put http://127.0.0.1:8000/books/1/ body体中传入修改的数据 -删除一个---》delete...全部修改:修改id为1的数据,这里尽量在body体里写全参数 局部修改:修改id为1的数据,修改啥写啥 删除一条数据:删除id为2的数据 CBV源码流程分析 因为DRF...多态、组合、反射 Django View和DRF APIView的小插曲 ps:不管是DRF中的APIView还是乱七八糟的xxView,最后只要继承了Django中的View就是视图类 DRF之APIView...提交的数据,可以处理多种格式的数据,无论前端传什么编码post提交的数据都在data中 ps:原来提交的数据在request.POST里,有局限性只能处理urlencoded和formdata编码格式...import QueryDict 注意:如果前端提交过来多个同名数据也就是form表单中input标签的name属性设置了多个重名数据就不能使用request.POST.get('user')来获取了
# 获取相应模型下的全部数据 def home(request): post_list = Post.objects.all() return render(request, 'blog...template_name = 'blog/home.html' context_objects_name = 'post_list' # 该方法默认返回指定模型的全部数据...实例 # 对应 post_detail 函数中的 post.increase_views() self.object.increase_views()...) # 如果没有数据则返回最后一页列表 return render(request, 'blog/home.html', locals()) 2.通过模版进行渲染 {% for post in...优化分页列表 最后我们列下 Paginator 常用属性结束 django 的入门教程,接下来会有 DRF 的入门教程,django 算是其基础吧,DRF 实现了前后端分离,刚好适合我这种 Android
2)返回的时候用到了 HttpResponse这一命令返回响应对象 1.3.2url地址的配置 1.在子应用中的urls.py文件中设置当前子应用中url地址和视图对应关系 urlpatterns =...1.6.3通过请求体传递数据 1)post表单提交的数据 /form/ def form_data(request): name = request.POST.get('name') age...(了解即可) 1.6.5request对象的属性 request请求对象的属性 说明 GET 查询字符串参数 POST 请求体重的表单数据 body 请求体中原始的bytes数据 method 请求方式...地址采用不同的请求方式执行不同的操作 GET(获取) POST(新增) PUT(修改) DELETE(删除) 3)过滤参数可以放在查询字符串中 4)响应数据返回&响应状态码 状态码 说明 200 获取或修改成功...1.将数据库数据序列化为前端所需要的格式,并返回 2.将前端发送的数据反序列化为模型类对象,并保存到数据库中 2.4DRF框架 2.4.1作用:大大提高RestAPI接口开发效率 2.5序列化器Serializer
在views_base中,我被 JsonResponse,HttpResponse这两个模块之间的有什么不同所引起好奇心,都是返回字符串,一个可以返回json,而另一个需要添加一些设置才能返回json。...基于一条真理: 1 网络传输的数据都是字符串! 我将HTTPResponse中除了要返回的字符串,其他参数都删了,代替JsonResponse来作为return值。...name字段(昵称),而drf在找的是AbstractUser的username字段(用户名),没找到所以报错 解决方法:将UserProfile表中的__str__方法改成返回username: 1...它支持解析HTTP方法以外的内容POST,这意味着你可以访问内容PUT和PATCH请求。 它支持REST框架的灵活请求解析,而不仅仅是支持表单数据。...例如,您可以像处理传入表单数据一样处理传入的JSON数据。 request.query_params相当于django本身的request.GET。
""" 接口:联系两个物质的媒介,完成信息交互 web程序中:联系前台页面与后台数据库的媒介 web接口组成: url:长得像返回数据的url链接 请求参数:前台按照指定的key提供数据给后台...search=西&ordering=-price&limit=3 响应数据: 1) http请求的响应会有响应状态码,接口用来返回操作的资源数据,可以拥有 操作数据结果的 状态码 status...POST /collection:返回新生成的资源对象 PUT /collection/resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象...print(request.query_params) return Response('drf post ok') 总结: # 1) drf 对原生request...中,所有数据包数据都被解析到data中 渲染模块 浏览器和Postman请求结果渲染数据的方式不一样 ---- 源码入口 APIView类的dispatch方法中:self.response = self.finalize_response
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...一、DRF 框架所有视图类 最基础:django 自带的 views 类 DRF 框架最基础的视图类:views.APIView DRF 框架中工具视图:generics GenericAPIView...:该视图类中的基类 mixins 视图工具集: RetrieveModelMixin:retrieve 单取 ListModelMixin:list 群取 CreateModelMixin:create...单局部修改 DestroyModelMixin:destroy 单删 viewsets 视图集 以上视图都是基于 django 自带的 views 进行相关方法的封装 二、APIView 实现 get post...views.BookListView.as_view()), class BookListView(APIView): def get(self, request): # 数据库查询
axios 类似于 AJAX 的功能,主要为了访问后端 api 来获取数据。 mockjs 主要用于模拟后端的 api 接口返回数据。...Mock.mock('api/users/', (req, res) => { //当post或get请求到/api/users/路由时Mock会拦截请求并返回上面的数据 var list =...再搭建后端 这里以 DRF(Django REST Framework) 为例。如果对 DRF 还是第一次接触,建议先按官方的教程[2]走一遍。...接下来访问 http://127.0.0.1:8000/user.json 可以看到返回如下 json 格式的数据。 后端开发工作至此告一段落。...实际开发中,我们在请求后端接口时的 url 一般不会填写 ip 地址和端口,而是 'api/xxx' 这种形式,这里是为了展示如何在开发环境进行前后端联调而写成此种形式。
你可以制作自己的视图,设置合适的 Content-Type,然后返回 JSON 而不是渲染后的 HTML 响应。...如果你对 Django 的视图类很熟悉,你会觉得使用 DRF 构建 REST API 与使用它们很相似,不过 DRF 只针对特定 API 使用场景而设计。...你可以查看 DRF 的示例代码。你可以查看 API 响应,并且不需要你做任何事就可以支持 POST/PUT/DELETE 类型的操作。...便于集成各种认证方式,如 OAuth, Basic Auth, 或API Tokens。 内建请求速率限制。...Django stored messages 可以很好地集成在Django的消息框架中(django.contrib.messages)并让用户决定会话过程中存储在数据库中的消息。
目录 安装DRF框架 drf请求生命周期流程 请求模块:request对象 渲染模块: 安装DRF框架 pip install djangorestframework drf请求生命周期流程 根据应用中...,得到请求的响应结果, 返回给前台所以以后直接就从APIView的dispatch入口看源码 请求模块:request对象 1) drf 对原生request做了二次封装,设置request....中,所有数据包数据都被解析到data中 get请求:url中拼接的参数通过request.query_params获取 post请求:所有请求方式所携带的数据包都是通过request.data获取 请求模块最终的结论就是...:获取数据有两种方式 query_params和data(通过parser解析数据传到data) 使用drf写的get/post请求 渲染模块: 自定义全局配置:所有视图类统一处理,在项目的settings.py...get ok 2') def post(self, request, *args, **kwargs): return Response('drf post ok 2')
视图可以是简单的函数,也可以是复杂的类,但它们的主要职责是处理输入(如表单数据)并返回输出(如网页)。...传递上下文数据 上下文是Django视图和模板之间的桥梁,它允许视图向模板传递数据。上下文可以是字典或任何可迭代的对象。 4. 处理表单数据 Django视图可以处理用户通过表单提交的数据。...这通常涉及到使用Django的表单类来验证和处理数据。 5. 错误处理 在Web开发中,错误处理是必不可少的。Django视图可以通过抛出异常来处理错误。...6.代码实现 为了更好地理解上述概念,下面是一个完整的示例代码,展示了如何在Django中创建一个简单的博客应用,包括视图、模板和表单处理。...通过本文的介绍,你应该对如何在Django中使用视图来处理请求、渲染模板、传递上下文数据、处理表单以及错误处理有了深入的理解。这些技能是构建复杂且功能丰富的Web应用的基础。
视图可以是简单的函数,也可以是复杂的类,但它们的主要职责是处理输入(如表单数据)并返回输出(如网页)。...传递上下文数据上下文是Django视图和模板之间的桥梁,它允许视图向模板传递数据。上下文可以是字典或任何可迭代的对象。4. 处理表单数据Django视图可以处理用户通过表单提交的数据。...这通常涉及到使用Django的表单类来验证和处理数据。5. 错误处理在Web开发中,错误处理是必不可少的。Django视图可以通过抛出异常来处理错误。...6.代码实现为了更好地理解上述概念,下面是一个完整的示例代码,展示了如何在Django中创建一个简单的博客应用,包括视图、模板和表单处理。...通过本文的介绍,你应该对如何在Django中使用视图来处理请求、渲染模板、传递上下文数据、处理表单以及错误处理有了深入的理解。这些技能是构建复杂且功能丰富的Web应用的基础。
快速构建 API:通过 DRF 的封装类(如 APIView、ModelSerializer)减少重复代码。功能丰富:内置认证、权限、分页、过滤等常用功能。...二、适用场景前后端分离项目(如为 Vue/React 提供数据接口)。移动应用(iOS/Android)后端 API。快速开发企业级数据管理后台。...三、实现一个简单接口第 1 步:安装配置 DRF安装 DRF:pip install djangorestframework创建book应用python manage.py startapp book配置...max_length=100, verbose_name='书名', # 在 Admin 后台显示为"书名" help_text='请输入书籍名称(最多100个字符)' # 表单中的帮助提示...(books, many=True) # 返回 JSON 响应 return Response(serializer.data)第 5 步:配置路由将视图映射到 URL:#
请求中的表单数据 formData := r.Form // 处理POST请求的逻辑 // 这里可以根据表单数据做相应的处理 // 返回一个简单的成功消息给客户端...如果是POST请求,则首先解析请求体中的表单数据,然后我们可以根据表单数据做相应的处理。最后,向客户端返回一个简单的成功消息。 现在,我们的HTTP服务已经支持GET和POST请求了。...请求中的表单数据 formData := r.Form // 处理POST请求的逻辑 // 这里可以根据表单数据做相应的处理 // 返回一个简单的成功消息给客户端...对于GET请求,我们直接返回一个简单的消息;对于POST请求,我们首先解析请求体中的表单数据,然后根据表单数据做相应的处理,并向客户端返回一个成功消息。...同时,我们还介绍了如何在同一个HTTP服务中实现对GET和POST请求的支持,使得我们的服务更加灵活和全面。
领取专属 10元无门槛券
手把手带您无忧上云