Django日志详解
Django对于日志输出的信息是很完善的,request的信息,setting配置,trackback的信息,一应俱全,足够我们调试了。但是在线上环境,如果让用户看到这些信息,是很不安全的(暴露代码)。所以在线上我们要关闭Debug,但是又不能扔掉这些调试信息,这就要用到日志了。Django使用Python内建的logging模块打印日志,但在Django中……
Django REST framework Mixins
mixins在drf中主要配合viewset共同使用,实现http方法与mixins的相关类与方法进行关联。关于viewset可以看我另外一篇博客,这里不过多介绍。 在这个viewset中,主要有5类Minxin,他们与http方法对应如下: mixins 作用 对应HTTP的请求方法 mixins.ListModelMixin 定义list方法,……
Django Channels Tutorial
最近在实现数据库运维平台时需要用到 WebSocket,而原生的 Django 又不支持 WebSocket,仅有 Django Channels 库支持 WebSocket。 正常情况下,Django 使用 HTTP 请求实现客户端和服务器端的通信: 1. 客户端发送 HTTP 请求到服务器端 2. Django 解析请求,提取 URL,并将其和 View……
Django REST framework过滤和搜索
一、过滤 在使用DRF写平台的时候,或多或少都会有过滤的需求。而在DRF中常用的就是django-filter库了,django-filter库包括一个DjangoFilterBackend类,它支持REST Framework的高度可定制的字段过滤。 首先安装django-filter: $ pip install djang……
Django REST framework分页
一、分页配置 在系统开发中,分页一般都是必不可少的功能。REST framework包含对可定制分页样式的支持,这使你可以将较大的结果集分成单独的数据页面。 需要知道是,分页仅在你使用通用视图或视图集时自动执行。如果你使用的是常规APIView,则需要自己调用分页 API 以确保返回分页响应。示例请参阅mixins.ListModelMixin和generi……
Django跨站请求伪造(CSRF)保护
一、概述 CSRF(Cross Site Request Forgery)跨站点伪造请求,举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果某个用户已经登录到你的网站上了,那么当这个用户点击这个恶意网站上的那个链接时,就会向你的网站发来一个请求,你的网站会以为这个请求是用户自己发来的。其实呢,这个请求是那个恶意网站伪造的。 举例:假如用户aa登录了银行……
Django REST framework API认证(包含JWT认证)
一、背景 在我们学习Django Rest Framework(简称DRF)时,其非常友好地给我们提供了一个可浏览API的界面。很多测试工作都可以在可浏览API界面完成测试。要使用可浏览API界面很简单,只需要在urls.py文件中添加如下部分即可。 from django.conf.urls import include u……
Django REST framework API Guide
学习Django REST framework时,当大致理解及学完了Django Rest framework教程部分后,你可能就需要看看每个API了,这样对于Django REST framework的理解可能才会更加深入。因为在教程部分有很多东西并没有讲的那么细致,只能从API指南处学习。网友@jianshijiuyou已经把API部分通过Google翻……
Django REST framework APIView&ViewSets
Django REST framework(简称DRF)为我们提供强大的通用view的功能,本博客对这些view进行简要的总结分析。首先,我们看一下主要的几种view以及他们之间的关系。 这其中,还涉及了mixins,主要也分为5类: mixins 作用 对应HTTP的请求方法 mixins.ListModelMixin 定义list方法,返回一……
Django REST framework Serializer
一、Serializers Serializers(序列化器)是什么?序列化器允许将诸如查询集(QuerySet)和模型实例之类的复杂数据转换为原生Python数据类型,然后可以将它们轻松地呈现为JSON,XML或其他内容类型。序列化器还提供反序列化,在首次验证传入数据之后,可以将解析的数据转换回复杂类型。 REST framework中的序列化类与Djan……
Django模型QuerySet序列化
我们知道Django Model QuerySet API有很多方法都是返回QuerySet对象。但很多时候我们都需要对QuerySet进行一个序列化操作,以便于提供给其他服务使用。 比如查询出模型对象所有记录: >>> raw = Author.objects.all() >>> type……
Django时区问题
一、概述 当开启时区支持后,在内部使用时区相关的对象时,Django将时间用UTC格式存储到数据库中;并且在模板(templates)与表单(forms)中将时间转换为终端用户所在时区的时间。当你的用户生活在多个时区,并且你希望根据他们所在的位置显示当地时间时很有用。 另外即使你的网站仅在一个时区使用,仍然以UTC时间格式存储数据到数据库中是个好习惯。主要原……