文档章节

django-Tastypie(1)

sola酱
 sola酱
发布于 2015/08/20 18:01
字数 432
阅读 60
收藏 0

tastypie能用于作为Django项目中的接口,开发时候很方便。

class CartResource(Resource):
    class Meta:
        resource_name = 'cart'
        object_class = object
        allowed_methods = ['post']
        authentication = SiteUserAuthentication()
        validation = FormValidation(form_class=GetCartForm)
        
    def get_list(self, request, **kwargs):
        return self.create_response(request, req)
    def post_list(self, request, **kwargs):
        return self.create_response(request, req)

allowed_methods是标明该api的url的限制,默认就['get', 'post', 'put', 'delete', 'patch'],一般会有限制。

get对应get_list方法,post对应post_list方法,经常要对这两个方法中的req进行复制,req是返回的数据,默认是json类型,

所以req的内容是json的格式,如req = {'status':True,'id'=1}。

其中create_response看源代码,可以知道这方法返回时一个HttpResponse,那么可以在酱紫。

def create_response(self, *args, **kwargs):
        response = super(AutoResource, self).create_response(*args, **kwargs)
        response['Access-Control-Allow-Origin'] = '*'
        response['Access-Control-Allow-Headers'] = 'Content-Type'
        response['Access-Control-Allow-Methods'] = 'OPTIONS,GET,POST'
        return response

重写这个方法,在HttpResponse类的response对象中可以对header等一些地方做小动作。


authentication可以对用户的验证,默认是Django中的User类,如果有自己创建的用户,可以参照源代码中进行小修改,

该验证是读该api的http中的header,Django中http的header是request.META.


validation可以对post的json内容进行验证,用form表单的类进行验证。

里面的bundle是一个很重要的对象,这是生成bundle的源代码

def build_bundle(self, obj=None, data=None, request=None, objects_saved=None):
        """
        Given either an object, a data dictionary or both, builds a ``Bundle``
        for use throughout the ``dehydrate/hydrate`` cycle.

        If no object is provided, an empty object from
        ``Resource._meta.object_class`` is created so that attempts to access
        ``bundle.obj`` do not fail.
        """
        if obj is None and self._meta.object_class:
            obj = self._meta.object_class()

        return Bundle(
            obj=obj,
            data=data,
            request=request,
            objects_saved=objects_saved
        )

里面有obj,data,request,objects_saved,一般常用有data,request,http里面的body在bundle.data取出,bundle.request和request一样。


© 著作权归作者所有

共有 人打赏支持
sola酱
粉丝 2
博文 20
码字总数 4740
作品 0
揭阳
用python实现API --- 提供组件能够方便实现开放API

用python实现API django-piston之前用的人很多,现在更新不是很频繁,不推荐。 django-tastypie最近很火,值得关注。 我个人推荐djangorestframework。它使用了class based view,扩展起来很...

durban
2012/04/27
0
0
Django 利用 API 实现 AJAX 操作

Django的缺点之一,就是它不支持AJAX。好吧,我知道这么一说又会有一群人反驳:Django有各种模块可以提供AJAX功能;写一个XML的view来实现AJAX;整合pyjams就什么功能都有了云云。嘛,都可以...

岭南六少
2011/08/18
0
0
Python元类的一些应用

最近刚接触python的元类,网络上有比较详细的介绍,这里是在看Django时候发现一点关于元类的应用,做个笔记。 from django.utils import six class A(type): def new(cls, name, parents, at...

sola酱
2015/09/08
264
0
django-tastypie 笔记

class Meta: queryset = User.objects.all() resource_name = 'user' #limit 默认 获取数据数量 20 limit = 10 #不显示字段 # excludes = ['email','password',] #需要显示的字段 fields = [......

best_raven
2015/03/03
0
0
Django的Web服务接口--Tastypie

Tastypie 是为 Django 框架提供的 Web 服务 API,提供了常规的、强大以及高可定制的、抽象的创建 RESTful 风格接口的工具。 特性: Full support Reasonable defaults Designed to be extend...

匿名
2012/02/03
2.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

67:shell脚本介绍 | shell脚本结构 | 执行data命令用法 | shell脚本中变量

1、shell脚本介绍: shell是一种脚本语言和传统的开发语言相比,会比较简单: shell有自己语法,可以支持逻辑判断、循环等语法: 可以自定义函数,目的是减少重复的代码: shell是系统命令的集合...

芬野de博客
29分钟前
1
0
json schema

json schema是用来验证和描述json对象结构的。 在线验证:https://www.jsonschemavalidator.net/ json schema 编辑器,推荐VSCode,写上"$schema": "https://raw.githubusercontent.com/jso......

谷永权
34分钟前
1
0
部署生产级的 Kubernetes 集群,使用kubespray

部署生产级的 Kubernetes 集群,使用kubespray 项目源码,https://github.com/openthings/kubespray 国内部署,https://github.com/zhangguanzhang/Kubernetes-ansible 欢迎加入 kubernetes......

openthings
41分钟前
0
0
73.分发系统介绍 expect脚本远程登录 执行命令 传递参数

20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行命令 20.30 expect脚本传递参数 20.27 分发系统介绍: 场景:业务越来越大。用的比如app,后端(也就是服务器)所使用...

王鑫linux
47分钟前
0
0
SpringBoot应用不能访问项目静态页面html问题处理

问题描述:SpringBoot搭建web应用在eclipse中启动能够正常访问页面,打包成jar之后不能访问到页面,没有任何出错提示。 环境:使用的是前后端分离架构,没有使用模板,前端html和静态文件放到...

奋斗小蜗牛
49分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部