标签: tastypie

django tastypie仅获取特定对象的特定字段

在tastypie我的网址:/ api/v1/course/1 /?format = json给出以下json:

{
created_on: "2012-02-27T08:00:54",
description: "this is course 1",
id: "1",
resource_uri: "/api/v1/course/1/",
subjects: [
    "/api/v1/subject/1/",
    "/api/v1/subject/2/"
],
title: "Course 1"
}
Run Code Online (Sandbox Code Playgroud)

我想做的事情如下:

/api/v1/course/1/subjects/?format=json   
Run Code Online (Sandbox Code Playgroud)

仅获取给定课程的科目列表.这可能吗?

django json tastypie

5
推荐指数
1
解决办法
2147
查看次数

在get_resource_uri中构建反向URL

如果有人阅读Tastypie-Mailinglist:我没有在那里得到答案,很抱歉在这里交叉.

在Tastypie中,我更改了Resource的URL模式,因为我使用的是另一个键而不是PK.当我访问资源时,这工作正常.现在我想将此资源嵌套到父资源中,但嵌套的资源包含带有PK的URI,而不是我的自定义密钥.我学到的是,在我的情况下,我必须改变孩子的get_resource_uri.

我孩子的资源(NamespacedResource)中的方法如下所示:

def get_resource_uri(self, bundle_or_obj):

    obj = bundle_or_obj.obj if isinstance(bundle_or_obj, Bundle) else bundle_or_obj

    kwargs={
        'resource_name': self._meta.resource_name,
        'custom_id': obj.custom_id
        }

    return self._build_reverse_url('api_dispatch_detail', kwargs=kwargs)
Run Code Online (Sandbox Code Playgroud)

孩子的网址覆盖方法是这样的:

def override_urls(self):
    return [
        url(r"^(?P<resource_name>%s)/(?P<custom_id>[-_\w\d]+)%s$" % (
                self._meta.resource_name,
                trailing_slash()
            ),
            self.wrap_view('dispatch_detail'),
            name="api_dispatch_detail"
        ),
    ]
Run Code Online (Sandbox Code Playgroud)

但是应用程序无法反转URL.我收到此错误:

Reverse for 'api_dispatch_detail' with arguments '()' and keyword arguments '{'custom_id': u'3_ee5-4423', 'resource_name': 'myresource'} not found.
Run Code Online (Sandbox Code Playgroud)

如何正确反转URL?

提前致谢.

django tastypie

5
推荐指数
1
解决办法
1211
查看次数

如何使用Tastypie获得django-simple-history的工作?

我需要存储对象所做更改的完整历史记录.我发现django-simple-history非常吸引人,但它不适用于django-tastypie.如果我使用PUT将数据发送到API(更新对象),则对象会更新,但不会更新历史记录.如果我通过'./manage.py shell'手动更改对象,一切正常.它似乎是tastypie绕过信号或其他东西.

任何想法如何让我按预期工作?

django tastypie

5
推荐指数
1
解决办法
478
查看次数

限制仅访问拥有的内容 django

我正在使用django-tastypie编写 API 。我有两个自定义权限问题,希望django-guardian能够解决。

我有两个用户组临床医生和患者。临床医生应该能够访问仅属于其患者的对象,并且患者应该只能访问他们自己创建的对象。

我的代码如下:

class UserResource(ModelResource):
    class Meta:
        queryset = User.objects.all()
        resource_name = 'auth/user'
        excludes = ['email', 'password', 'is_superuser']


class BlogPostResource(ModelResource):
    author = fields.ToOneField(UserResource, 'author', full=True)

    class Meta:
        queryset = BlogPost.objects.all()
        resource_name = 'posts'
        allowed_methods = ["get", "post"]
        # Add it here.
        authentication = BasicAuthentication()
        authorization = DjangoAuthorization()
        filtering = {
            'author': ALL_WITH_RELATIONS,
        }
Run Code Online (Sandbox Code Playgroud)

我如何使用权限来限制对此的访问BlogPostResource

python django tastypie django-guardian

5
推荐指数
1
解决办法
2676
查看次数

如何在Django项目中实现Tastypie中的登录模块

我目前正在开展一个需要Api的项目,我选择Tastypie并实施以下内容.我想在我的代码中使用tastypie的默认功能,如ApiKeyAuthentication,DjangoAuthorization等...

class UserResource(ModelResource):
    class Meta:
        queryset = User.objects.all()`enter code here`
        fields = ['first_name', 'last_name', 'email']
        allowed_methods = ['get', 'post']
        resource_name = 'user'

    def override_urls(self):
        return [
            url(r"^(?P<resource_name>%s)/login%s$" %
                (self._meta.resource_name, trailing_slash()),
                self.wrap_view('login'), name="api_login"),
            url(r'^(?P<resource_name>%s)/logout%s$' %
                (self._meta.resource_name, trailing_slash()),
                self.wrap_view('logout'), name='api_logout'),
        ]

    def login(self, request, **kwargs):
        self.method_check(request, allowed=['post'])
        data = self.deserialize(request, request.raw_post_data,format=request.META.get('CONTENT_TYPE', 'application/json'))

        username = data.get('username', '')
        password = data.get('password', '')

        user = authenticate(username=username, password=password)
        if user:
            if user.is_active:
                login(request, user)
                return self.create_response(request, {
                    'success': True
                })
            else:
                return self.create_response(request, {
                    'success': False, …
Run Code Online (Sandbox Code Playgroud)

django tastypie

5
推荐指数
0
解决办法
193
查看次数

Django Tastypie:将多个模型中的值发布到单个Tastypie资源中

第一个型号:

class Profile(models.Model):

    username = models.CharField(
        _('username'),
        max_length=150,
        unique=True,
        help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
        validators=[
            validators.RegexValidator(
                r'^[\w.@+-]+$',
                _('Enter a valid username. This value may contain only '
                  'letters, numbers ' 'and @/./+/-/_ characters.')
            ),
        ],
        error_messages={
            'unique': _("A user with that username already exists."),
        },
    )
   password = models.CharField(max_length=12, default='123456')
    first_name = models.CharField(_('first name'), max_length=30, blank=True)
    last_name = models.CharField(_('last name'), max_length=30, blank=True)
    email = models.EmailField(_('email address'), blank=True)
    date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
Run Code Online (Sandbox Code Playgroud)

第二种模式:

class UserEbiz(models.Model): …
Run Code Online (Sandbox Code Playgroud)

django tastypie

5
推荐指数
1
解决办法
161
查看次数

将经过身份验证的POST请求发送给tastypie

我正在尝试将一个ApiKey认证的POST请求发送到tastypie API

我的型号:

class Thing(models.Model):
    name = models.TextField()

    def __unicode__(self):
        return u'%s'%self.name
Run Code Online (Sandbox Code Playgroud)

我的ModelResource

class ThingResource(ModelResource):
    class Meta:
        queryset = Thing.objects.all()
        resource_name="thing"
        authentication = ApiKeyAuthentication()
        authorization = DjangoAuthorization()
Run Code Online (Sandbox Code Playgroud)

我的urls.py

from django.conf.urls.defaults import patterns, include, url

from tastypie.api import Api
from myapp.api import ThingResource

mobile_api = Api(api_name='mobile')
mobile_api.register(ThingResource())

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    url(r'^admin/', include(admin.site.urls)),

    (r'^api/', include(mobile_api.urls)),
)
Run Code Online (Sandbox Code Playgroud)

和我的cURL命令

curl --dump-header - -H "Accept: application/json" -H "Content-Type: application/json"  -d"username=vikingosegundo" -d"api_key=12345" -X POST --data "{\"name\":\"arrrg\"}" http://localhost:8000/api/mobile/thing/
Run Code Online (Sandbox Code Playgroud)

响应

{"error_message": …
Run Code Online (Sandbox Code Playgroud)

python django curl tastypie

4
推荐指数
2
解决办法
6954
查看次数

Django,Tastypie和检索新的对象数据

我玩重型客户端应用程序.

想象一下,我有这个模型:

class Category(models.Model):
    name = models.CharField(max_length=30)
    color = models.CharField(max_length=9)
Run Code Online (Sandbox Code Playgroud)

我使用knockoutjs(但我想这并不重要).我有一个列表(observableArray)与类别,我想创建一个新类别.

我创建了一个新对象,然后将其推送到列表中.到现在为止还挺好.

把它保存在我的数据库上怎么样?因为我正在使用tastypie,我可以对'/ api/v1/category /'进行POST,并且新的类别在DB上.

好的,但是......我没有刷新页面,所以...如果我想更新新类别,我该怎么做?

我的意思是,当我检索类别时,我可以保存ID,这样我就可以设置'/ api/v1/category/id'并保存更改,但是...当我创建一个新类别时,数据库分配它的ID,但我的JavaScript还不知道该ID.

换句话说,工作流程类似于:

make get>将现有对象(及其ID)推送到列表>创建新类别>将其推送到列表>保存现有类别(该类别在javacript上没有id)>编辑类别>我如何保存更改?

所以,我的问题是,共同的道路是什么?我想过发送类别并以某种方式检索id并将其分配给我在js上的对象以便以后能够修改它.问题是对服务器进行POST不会返回任何内容.

在过去,我做了类似的事情,通过post发送对象,保存,检索并发送回来,在success方法中检索id并将其分配给js对象.

谢谢!

django tastypie knockout.js

4
推荐指数
1
解决办法
1689
查看次数

Django Tastypie - Prepend URL不起作用

我尝试使用prepend_url()类似于tastypie cookbook中的搜索示例的功能.由于某种原因,浏览器只返回404而没有其他事情发生......

python api django tastypie

4
推荐指数
1
解决办法
1886
查看次数

在Tastypie中序列化django-mptt树

如何序列化django-mpttTastypie

我想用django-mpttcache_tree_children().我尝试过应用不同的Tastypie钩子,但它会抛出一个错误.

django django-mptt tastypie

4
推荐指数
1
解决办法
980
查看次数

标签 统计

django ×10

tastypie ×10

python ×3

api ×1

curl ×1

django-guardian ×1

django-mptt ×1

json ×1

knockout.js ×1