rest_framework】的更多相关文章

前言: 最近工作中需要用到Django rest_framework框架做API, 边学边写,记录了一些实际工作中需要用到的功能,不是很全也不系统,以后需要什么功能可以在这查询. 后续还会更新其它的用法 #################################################################### ########安装和简单使用 ###### 准备工作 pip install rest_framework # 安装 INSTALLED_APPS = (…
rest_framwork 之post 与put rest_framwork可以接受post与put delete get请求,可以对资源进行刚CRUD,以一个DEMO为例, 1.先在VIEW里定义一个方法 @api_view(['GET', 'PUT', 'DELETE']) def book_detail(request,pk): """ Retrieve, update or delete a book instance. """ try:…
接上文 这里先写一个GET请求的 1.先在VIEW里定义一个方法 代码如下: @api_view(['GET', 'POST']) def book_request(request): if request.method == 'GET': queryset = Book.objects.all() serializer_class = BookSerializer serializer = BookSerializer(queryset) return Response(serializer.…
环境 django 1.6,rest_framework 3.3 ubuntu采用pip安装的rest_framework 按照例子一步步做下来 运行 提示filters.py第119行有错误forms.UUField找不到,查找了下好像上下问并没有使用UUIDFilter这个,注释掉 这个时候错误变成了No module named http_client 没道理一安装有这么多错误,Bing之发现有人说是版本不匹配,从服务起down了一个2.4.x下来setup了 错误变成了'module'…
余下的就是静心看官方文档了. 这个是最抽象的了. urls.py """tutorial URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/1.8/topics/http/urls/ Examples: Function views 1. Add an import:…
urls.py from django.conf.urls import url from rest_framework.urlpatterns import format_suffix_patterns from snippets import views urlpatterns = [ url(r'^$', views.api_root), url(r'^snippets/$', views.SnippetList.as_view(), name='snippet-list'), url(r…
哈哈,终于快结束了.. urls.py from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^', include('snippets.urls')), ] urlpatterns += [ url(r'^api-auth/', include('rest_framewo…
一层一层的封装,又能到底层,就会有全局感啦... from rest_framework import status from rest_framework.response import Response from snippets.models import Snippet from snippets.serializers import SnippetSerializer from django.http import Http404 from rest_framework.views i…
优化前和优化后的代码,融在一起,能看看进化的过程. MODELS.PY from django.db import models from pygments.lexers import get_all_lexers from pygments.styles import get_all_styles LEXERS = [item for item in get_all_lexers() if item[1]] LANGUAGE_CHOICES = sorted([(item[1][0], ite…
我想,其它几个基于PYTHON的REST API模块概念都差不多吧. 先深入搞定这个吧. 前几次练习完了有一些印象,并且在工作中实践过一个,现在多弄几次,玩熟悉点. Serializers.py __author__ = 'CHENGANG882' from django.contrib.auth.models import User, Group from rest_framework import serializers class UserSerializer(serializers.Hy…
按英文原始的DOCUMENT走一圈,从最手工的输出到高度的集成. 最后真的就几行代码,实现最常用的JSON API..纯RESTFUL风格. 但,其核心是要记住序列化生反序列的过程,都是要以PYTHON的原生数据结构为中间转化要素的. 原文如下: We've now got a few snippet instances to play with. Let's take a look at serializing one of those instances. serializer = Snip…
首先得有一点常识,比如用户认证,就是authenticate 比如一个函数,应该有返回值, 比如一个类里面的self,真的是代表本身这个类吗 再比如看到一个东西加括号,就两种情况,一种是函数,一种是类,区分函数和类,就看加括号之后的东西,是否还调用属性或者方法 还有如果你用pycharm,看源码就很方便了,看到一个属性或方法,你需要做的就是按住ctrl点进去就行了 假设你已经知道,dispatch函数是源码的入口,然后我们就可以愉快的交流了 下面演示如何使用rest_framework的用户认证…
在看源码之前先了解一下什么是rest,restful api. 什么是rest 可以总结为一句话:REST是所有Web应用都应该遵守的架构设计指导原则. REST是Representational State Transfer的简称,中文翻译为"表征状态转移". restful api 符合REST架构设计的API. restful api的书写规范: - URL(在url中表现出来它是一个api) - url名词(url应当是名词) - 版本 (在url中表明版本号) - 提交方式(…
#!/usr/bin/env python # -*- coding:utf-8 -*- from rest_framework.views import APIView from rest_framework.response import Response class TestView(APIView): def get(self, request, *args, **kwargs): # self.dispatch print(request.user) print(request.aut…
Django Rest Framework 一.rest api    a.api就是接口         如: - http://www.oldboyedu.com/get_user/                - http://www.oldboyedu.com/get_users/    b.api的两个用途         1.为别人提供服务         2.前后端分离 二.restful     a.--字面意思:表征状态转移     b.面向资源编程,对互联网上的任意东西都视…
一.什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为"表征状态转移" REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态 REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为"表征…
实例化: v1 = ["view.xxx.path.Role","view.xxx.path.Group",] 可以循环,循环出来的每一个不能实例化 如果把v1循环弄成每一个对象列表,通过rsplit切割,在通过importlib.import_module拿到每一个路径,在通过getattr把它的类名拿过来,这个类加括号就是实例化想 for item in v1: m = importlib.import_module('view.xxx.path') cls =…
补充:  为什么要前后端分离:       a.因为前端它有自己框架,这样它的效率就非常高       b.不做前后端分离,公司如果既有客户端,又有app这种情况下你就的写两遍 django restful框架好处:       帮助我们写了好多组件比如:       a.认证:有类,类中的方法authenticate/authenticate_header,它的返回值有None,元组,异常.如果返回值为None那就不管,它是匿名用户.       b.权限:有类,类中的方法:has_permi…
解析器 我们都知道,网络传输数据只能传输字符串格式的,如果是列表.字典等数据类型,需要转换之后才能使用 但是我们之前的rest_framework例子都没有转换就直接可以使用了,这是因为rest_framework有一套解析器, 默认他会帮我们转换3种类型的数据,分别是,JSONParser,FormParser,MultiPartParser 而如果我们需要转换其他数据,需要在视图类里配置parser_classes参数,如下: from rest_framework.parsers impo…
一.什么是REST 面向资源是REST最明显的特征,资源是一种看待服务器的方式,将服务器看作是由很多离散的资源组成.每个资源是服务器上一个可命名的抽象概念.因为资源是一个抽象的概念,所以它不仅仅能代表服务器文件系统中的一个文件.数据库中的一张表等等具体的东西,可以将资源设计的要多抽象有多抽象,只要想象力允许而且客户端应用开发者能够理解.   与面向对象设计类似,资源是以名词为核心来组织的,首先关注的是名词.一个资源可以由一个或多个URI来标识.URI既是资源的名称,也是资源在Web上的地址.对某…
目录 Rest_framework Serializer 序列化 序列化与反序列化中不得不说的感情纠葛 三角恋之 save/update/create 四角恋之 序列化参数instance/data/many/partial 三角恋之 初始化参数data和序列化对象的data属性,validated_data 两个many=True 多对象的序列化与反序列化 多对象序列化的不同之处 嵌套子序列化 序列化源码解析 部分源码解析 各种类型数据对象对应的Field对象 FIeld对象抽象出来的共同特征…
目录 Rest_framework Router 路由器 ViewSet结合Router,自动生成url. 将ViewSet注册到Router中,需要三个要素: 关于路由规则,细分有四类: rest_framework.routers.SimpleRouter源码解析 SimpleRouter继承和方法一览 SimpleRouter类源码 总结 Rest_framework Router 路由器 虽说django rest_framework是基于django的,url路由到视图主要还是利用dj…
如果我们写API有人能访问,有人不能访问,则需要些认证. 如何知道该用户是否已登入? 如果用户登入成功,则给用户一个随机字符串,去访问另一个页面. 以前写session的时候,都是把session写cookie里面. 那现在我们可以把随机字符串通过返回值的方式给用户. 后端通过查看用户的url判断用户有没有token值且这个字符串是否正确也要判断.有则已登入,可以访问:没有则跳回登入页面. 用户登入 1.有些api需要用户登入才能访问,有些api不需要用户登入就能访问. models.py 创建…
一.一个请求来到Django 的生命周期   FBV 不讨论 CBV: 请求被代理转发到uwsgi: 开始Django的流程: 首先经过中间件process_request (session等) 然后:url --- > Xxx.as_view() 根据url映射到对应业务逻辑类 --->process_view (csrf等)   业务逻辑类中: as_view() -- > view ---> dispatch() 通过映射调用请求的方法在业务逻辑中的对应处理函数 (如post…
一.配置缓存   https://www.jb51.net/article/124434.htm 二.缓存全站.页面.局部   三.自我控制的简单缓存API API 接口为:django.core.chache 存接口:cache.set(key, value, time_out) 取接口:cache.get(key) django中的低层次缓存API 有些时候,对整个经解析的页面进行缓存并不会给你带来太多好处,事实上可能会过犹不及. 比如说,也许你的站点所包含的一个视图依赖几个费时的查询,每隔…
它是基于Django的,帮助我们快速开发符合RESTful规范的接口框架. 一  路由 可以通过路由as_view()传参 根据请求方式的不同执行对应不同的方法 在routers模块下 封装了很多关于路由的方法 , 最基础的BaseRouter类,给我提供自定制的接口. 下面这个方法给我们提供了自动生成两条带参数的url from rest_framework import routers from django.conf.urls import url, include from course…
昨日回顾: -HyperlinkedIdentityField(用来生成url),传三个参数 -实例化序列化类的时候,BookSerializer(ret, many=True, context={'request': request}) -序列化组件的数据校验 -类比forms组件 -局部(value是该字段的值) -validate_字段名(self,value) -全局钩子函数(通过校验值的字典) -validate(self,value) -认证 -写一个类: class LoginAu…
rest_framework.mixins 请求业务 的 5 种实现 ​ mixin(混合类):不能单独使用,和其它类搭配起来使用(利用了Python支持多继承) rest_framework.mixins imput 业务的 主要逻辑都在这里 CreateModelMixin 创建对象 post 请求 ListModelMixin 查询所有的对象 get请求 RetrieveModelMixin 查询一个对象 get请求 UpdateModelMixin 更改一个对象 put 请求 Destr…
最初形态(工作中可能会使用) 引子 Django的CBV我们应该都有所了解及使用,大体概括一下就是通过定义类并在类中定义get post put delete等对应于请求方法的方法,当请求来的时候会自动对应相应的方法并执行,urls.py中需要类点as_view()的方式来配置路由,至于如何拿到请求方法并对应执行我们自定义类中的方法,前面的博客中已经有了源码解析,这里不再陈述~ APIView 我们写的类不再继承Django的View类而是继承rest提供给我们的APIView类,这里对于一个数…
为什么要用序列化组件 当我们做前后端分离的项目,我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 那么我们给前端数据的时候都要转成json格式,那就需要对我们从数据库拿到的数据进行序列化. 接下来我们看下django序列化和rest_framework序列化的对比 Django的序列化方法 class BooksView(View): def get(self, request): book_list = Book.objects.values("id",…