首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django rest Framework入门 四 :视图

,而且如果不了解里面的细节,当以后遇到需要定制化的工作时可能就无从下手,这一篇笔记会记录一些我自己认为比较重要切常用的实现细节。...当视图有对应的Django Model(数据库模型类)的时候,最常用的就是ModelViewSet,因为DRF为我们封装了大量重复的事情,在实际开发工作中可以节省很多时间。...# ViewSet 虽然ModelViewSet在配合Django的数据库模型类开发的时候非常高效,但是它并不适用于所有的场景,比如当后端没有对应数据库模型类的时候就是不能使用它了。...在这个样例代码中,我依然使用到了Django的数据库模型类,但是其实如果把list、update这些函数内的代码换成其他的业务逻辑也是没有问题的,这样就是没有数据库模型类的使用场景。...总结 可以看到,总的来说,ModelViewSet在有数据库模型类的情况还是比ViewSet好用很多的,但是当后端没有数据库模型类的时候,就只能使用ViewSet了,所谓我们对于这两个视图类都要有一定的掌握

11910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入探索Python中的单元测试与TDD实践指南

    接下来,我们编写足够的代码来使测试通过:# my_math.py​def add(x, y): return x + y然后重新运行测试,它应该通过。...assert subtract(5, 3) == 2 # 预期结果是2,但实际结果是其他值运行pytest,我们预计会看到测试用例失败:pytest现在我们已经有了一个失败的测试用例,接下来就编写足够的代码使其通过...接下来,我们可以进行代码重构,使其更加清晰和可维护。例如,我们可以将一些常用的功能抽取成辅助函数,或者优化一些逻辑。...这样,我们就可以确保我们的代码在依赖外部模块时也能正常工作。总结在这篇文章中,我们深入探讨了Python中的单元测试、测试驱动开发(TDD)、集成测试和模拟的重要性和实践方法。...单元测试、TDD、集成测试和模拟是提高代码质量和可靠性的重要手段,通过不断学习和实践,我们可以编写出更加健壮和可维护的代码。希望本文能够帮助读者更好地理解和应用这些技术,并在实际项目中取得成功。

    45520

    Django REST 框架详解 06 | 视图家族 Generics 与 Viewsets

    比如,来自前端用户的数据格式并不是和我们规定的一样,有可能传来空值,错误字符等等。这就需要对 request.data 进行过滤,尤其是在入库的时候。...另外,如果数据有误,DRF 并不知道你的字段是哪出的问题,所以抛异常是只会是数据错误。我们需要对每个字段的每种错误类型给出对应的返回值。...代码实现 这样的好处是,各种需求的接口的请求方式都可以用不同函数定义返回值。比如十大接口对应十个函数,分别码代码。...比如,POST请求在标准的 Model 类操作用于新增接口,但以下案例并不符合这个标准。 案例 1: 请求手机验证码时,发送 POST 请求,不需要 Model 类的参与。...案例 2: 用户登录时,发送的 POST 请求,并不是完成数据的新增。POST 只是用于提交数据,返回值也不是登录用户信息,而是登录的认证信息。

    1.3K20

    11 . Python3之异常,调试和测试

    异常就是程序运行时发生错误的信号(在程序出现错误时,会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中错误出发的异常如下: 而错误分成两种: 1.语法错误(...(通常是输入^C) Exception 常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError...(没有属性) UnboundLocalError 访问未初始化的本地变量 ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象 RuntimeError 一般的运行时错误...解码时的错误 UnicodeEncodeError Unicode 编码时错误 UnicodeTranslateError Unicode 转换时错误 Warning 警告的基类 DeprecationWarning...如果错误发生的条件是可预知的,我们需要用if进行处理: 在错误发生之前进行预防.

    1.4K40

    用django写接口(实战篇)

    view,那这部分我们继续深入了解下 DRF 的分页,多条件筛选以及 Token 权限认证 接口数据分页 如果说,后台给你返回的数据很多很多,然后又没有做分页(反正我是碰到过),然后就一直卡在加载界面...',) } 基本配置完后我们需要对我们的 viewSet 做些修改,增加一个 filter_backends 属性和 filter_fields 属性 class PostViewSet(viewsets.ModelViewSet...User 表内可以通过 related_name 的值来引用 post 对象 author = models.ForeignKey(User, related_name='posts', on_delete...(viewsets.ModelViewSet): # ........return Response({'token': token.key, 'user_id': user.pk, 'user_name': user.username}) 然后在 url 绑定我们自己的认证类即可返回我们需要的字段值啦

    2.2K20

    django-rest-framewor

    DRF(Django RestFramework)是一套基于Django开发的、帮助我们更好的设计符合REST规范的Web应用的一个Django App,所以,本质上,它是一个Django App。...DRF对django视图配置流程图(个人画) ?...2 解析器组件 (用来解析数据的请求的组件)   Django并不能处理请求协议为application/json编码协议的数据   注意: DRF解析器会封装到View中的parsers内,在视图函数被调用时...(**initkwargs), cls是视图类,执行视图函数时self就指向视图函数的实例对象 等待客户端请求 请求到来,开始执行视图函数,注意,调用视图函数时的方式是view(request),而如果...cookie、session和token都有其应用场景,没有谁好谁坏,不过开发数据接口类的Web应用,目前用token还是比较多的。

    1.6K10

    Django REST Framework教程(一分钟入门)

    Web应用模式   我们开发django项目时,经常会接触的接口这个东西,那么django-web开发接口是怎样呢? ...但是后端对接APP时,App可能并不需要后端返回一个HTML网页,二仅仅是数据本身,所以后端原本返回网页的接口不在适用前端APP应用,为了对接APP后端嗨需再开发一套接口。        ...这个可以看我之前写的DJango博客就可以知道,每次返回时都是使用render 或者redirect来返回的,需要带上HTML页面和参数              2....runserver命令:  接口返回403,提示没有权限,我们登陆一下试试:  返回了两个url,一个是添加用户组,一个是添加用户。...细心的人可以发现,为啥status是红色的叉,是因为序列化的时候没有将状态字段显示,现在我将它放出来: 再运行程序,添加用户后查看:  进入后端管理页面查看:  是不是就开启了,如果不放心的同学,

    2.2K30

    善用 pytest fixture factory 构建结构优秀的单元测试

    评价单元测试是否优秀,分支覆盖率是非常重要的指标,而覆盖率的决定因素除了开发自身的素质以外,足够低的用例构建成本也是必不可少。...对于 Python 应用,当项目逻辑复杂度较高时,单纯使用原生的 unittest 或者是 Django 提供的 TestCase 都会遇到一个恼人的问题:测试代码大部分工作在构建各种用例。...building-good-tests.html#dont-inherit-from-unittesttestcase-in-test-classes-either-directly-or-indirectly 理想的单元测试...client.get_user() returns another User object assert client.get_user() == user 可以看出 pytest.fixture 固然能够足够强大...[ # 正常情况 ("abc", "xyz"), # 异常情况,当然也可以多拆分一个测试项 ("abc", ValueError

    515100

    NumPy 秘籍中文第二版:八、质量保证

    它不是十分活跃的开发工具,但它在此提到的速度又足够好。 在编写本书时,最新版本是 0.8.19,最近一次更新是在 2011 年。Pychecker 尝试导入每个模块并对其进行处理。...解压缩源归档文件并运行以下命令: $ python setup.py install 或者,使用pip安装 Pychecker: $ sudo pip install http://sourceforge.net...我们通过调用factorial()函数并运行以下代码来运行测试: 一个正数-幸福的道路!...该单元测试的工作方式与上一秘籍中的单元测试相同。 这里的第二项测试不测试任何内容。 第二个测试的目的只是演示,如果我们在没有模拟的情况下执行真实代码,会发生什么。...幸运的是,这些秘籍的要求非常简单-我们只需写下不同的输入值和预期的输出。 我们在Given,When和Then部分中有不同的方案,它们对应于不同的测试步骤。

    82020

    Django框架完全指南:从入门到高级应用

    pathfrom myapp import viewsurlpatterns = [ path('', views.index, name='index'),]运行开发服务器现在,我们可以启动Django...可以使用Nginx和Gunicorn等工具来部署Django应用程序,并考虑使用缓存、负载均衡和分布式架构来提高性能和可扩展性。安全性在开发Django应用程序时,确保应用程序的安全性至关重要。...Django提供了一个强大的测试框架,可以帮助我们编写和运行各种类型的测试,包括单元测试、功能测试和集成测试。...例如,编写一个简单的单元测试:from django.test import TestCasefrom .models import MyModelclass MyModelTestCase(TestCase...routersfrom .models import MyModelfrom .serializers import MyModelSerializerclass MyModelViewSet(viewsets.ModelViewSet

    3.9K20

    用Python支持 7 亿月活用户的应用?Instagram 是这样实现的

    在他们想要创造 Instagram 时,Django 是他们所知道的最稳定和成熟的技术之一。 时至今日,即使已经拥有超过 30 亿的注册用户。...使用单元测试来帮助迁移 对于 Python 这种灵活性极强的动态语言来说,除了真正去执行代码外,几乎没有其他比较好的检查代码错误的手段。...单元测试的局限性 但是,单元测试也是有局限性的: ● Instagram 的单元测试没有做到 100% 的代码覆盖率 ● 很多第三方模块都使用了 mock 技术,而 mock 的行为与真实的线上服务可能会有所不同...而反序列化的过程却是由 Python 2 进行,那代码运行时就会出现下面的错误: ValueError: unsupported pickle protocol: 4 这是由于在 Python 3 中,...● 完善的单元测试对于复杂项目是非常有必要的。如果没有那『成千上万的单元测试』。很难想象 Instagram 的迁移项目可以成功进行下去。 ● 开发者和同事也是你的产品用户,利用好他们。

    1.8K71

    Django实践-10RESTful架构和DRF入门

    Django静态文件问题备注: 参考: Django测试开发-20-settings.py中templates配置,使得APP下的模板以及根目录下的模板均可生效 解决django 多个APP时 static...文件的问题 django配置app中的静态文件步骤 Django多APP加载静态文件 django.short包参考: 中间件的应用 Django 前后端分离(REST Framework)...RESTful架构具有简洁、可扩展、易于理解和实现、与不同编程语言和平台无关等优点,因此在Web服务、移动应用、IoT等领域得到广泛应用。...JSON格式的数据 return Response(serializer.data) class UserViewSet(viewsets.ModelViewSet): """...4.在polls2的views.py中添加restful风格的函数 5.在urls.py中配置url映射 6.在static/html中新建前端页面 7.运行测试

    35421

    drf之请求、响应、视图

    1.2 Response(响应) drf 提供了一个响应类Response,使用该类构造响应对象时,响应的具体数据内容会被转换(render渲染)成符合前端需求的类型。...2.1 两个视图基类 2.1.1 APIView APIView是drf 提供的所有视图的基类,继承自Django的View父类。...GenericAPIView 继承自APIVIew,主要增加了操作序列化器和数据库查询的方法,作用是为下面Mixin扩展类的执行提供方法支持。通常在使用时,可搭配一个或多个Mixin扩展类。...**在ViewSet中,没有提供任何动作action方法,需要我们自己实现action方法。...3.2 action 在视图集中,我们可以通过action对象属性来获取当前请求视图集时的action动作是哪个。除了默认的方法动作外,还可以添加自定义动作。

    2.2K20

    使用Django单元测试与集成测试保障Web应用程序代码质量

    单元测试 单元测试是针对程序中最小的可测试单元进行的测试,通常是函数或方法。在Django中,我们可以使用unittest模块或Django自带的TestCase类进行单元测试。...方法来断言add函数的返回值是否符合预期。...最佳实践 在编写测试时,以下是一些Django中单元测试和集成测试的最佳实践: 测试覆盖率:尽可能覆盖所有的代码路径,以确保每一行代码都被测试到。 独立性:确保每个测试都是相互独立的,不会相互影响。...在Django中,TDD是一种常见的实践,它可以帮助开发人员更加专注地编写可测试、可维护的代码。 让我们以创建一个简单的待办事项(Todo)应用程序为例,演示如何使用TDD来开发。...,并指定其返回值为一个预定义的JSON对象。

    33720

    用django写接口(优化篇)

    作者:Kuky_xs 博客:https://www.jianshu.com/u/9fcd71535294 前言 系列文章: 《django入门:环境及项目搭建》 《django入门:数据模型》 《django...入门:视图及模版》 《django入门:Admin管理系统及表单》 《django入门:通用视图类重构视图》 在《用django写接口(入门篇)》提到这篇会讲 views 的代码优化,在这之前,我们先适当了解下...优化后的列表接口信息 我们继续做一些修改,在 post_list 函数中加入 format 参数,默认值设置为 None,接着我们对 url 也做一些修改,通过 format_suffix_patterns...的源码吧(兄 dei 别排斥源码啊,这里真的很少很少的,但是又能让我们知道到底做了什么事) class ModelViewSet(mixins.CreateModelMixin,...,接着,我觉得有必要把自己在 Android 端做的接口测试代码和运行结果贴出来,不然你们又会觉得我坑你们了......这边我为了偷懒(嗯对的,就是偷懒),我又写了一个只有单个字段的 model ?

    2.2K20
    领券