文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 哥们之间报恩的想法被上帝实现了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 小小编辑:推荐歌曲《消愁》 《消愁》- 毛不易 手机党少年们想听歌,请使劲儿戳(这里) @过遥 :周一的早上就应该用来补觉,太困了 周末不想...

小小编辑
11分钟前
10
3
MariaDB 服务器在 MySQL Workbench 备份数据的时候出错如何解决

服务器是运行在 MariaDB 10.2 上面的,在使用 MySQL Workbench 出现错误: mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"'......

honeymose
今天
3
0
apache顶级项目(二) - B~C

apache顶级项目(二) - B~C https://www.apache.org/ Bahir Apache Bahir provides extensions to multiple distributed analytic platforms, extending their reach with a diversity of s......

晨猫
今天
7
0
day152-2018-11-19-英语流利阅读

“超级食物”竟然是营销噱头? Daniel 2018-11-19 1.今日导读 近几年来,超级食物 superfoods 开始逐渐走红。不难发现,越来越多的轻食餐厅也在不断推出以超级食物为主打食材的健康料理,像是...

飞鱼说编程
今天
18
1
SpringBoot源码:启动过程分析(二)

接着上篇继续分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 一样的,我们先把时序图贴上来,方便理解: 二.源码分析 回顾一下,前面我们分析到了下...

Jacktanger
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部