标签: tastypie

Django活动源(Feedly Integration?)

我已经构建了一个简单的Django照片应用程序.用户可以上传照片,关注其他用户和照片.为了处理用户之间的关系(跟随和取消关注),我使用了一个名为django-relations by coleifer的软件包.这是一个很棒的包,使用起来非常简单.

一切都按预期工作.我目前有一个工作活动Feed.

我将Feed分为两部分:跟随(我关注的用户的所有活动)和你(发生在我身上的所有活动).我在我的iOS应用程序下面发布了两张图片,它使用我的Django照片应用程序,因为它是后端:

在此输入图像描述 在此输入图像描述

我想要做的是添加聚合到以下Feed.正如你所看到的,用户alexperri喜欢5次射击.我想将所有这些项目合并为一行.我不需要为"你"提要添加聚合,因为我希望看到每个单独的操作都发生在我身上.但是对于以下Feed,添加聚合是有意义的.有几个应用程序可以很好地进行聚合.Fashionlista,Pinterest和Instagram做得很好.这是一个来自Instagram的例子来展示我想要实现的目标:

在此输入图像描述

在上面的示例中,您可以看到以下Feed,而lovetoronto喜欢5张照片.我开始在播放后使用Instagram来查看它是如何工作的.Instagram关注源显示最多35个活动条目,每个条目最多可包含该活动类型的5个活动."lovetoronto喜欢5张照片"是一个活动条目,它显示了他喜欢的最新5张照片.由于lovetoronto进行了最新的动作,他处于领先地位.

我想实现相同的设置.

这是我目前的模型设置:

models.py

from django.db import models
from django.contrib.auth.models import User

class Photographer(models.Model):
    user = models.OneToOneField(User, primary_key=True
    likes = models.ManyToManyField('Photo', through = 'Likes', 
                                   related_name = 'likedby', blank = True)

class Photo(models.Model):
    photographer = models.ForeignKey(Photographer, related_name = 'shot_owner')
    created = models.DateTimeField(auto_now_add=True)
    url = models.CharField(max_length=128)

class Likes(models.Model):
    liked_at = models.DateTimeField(auto_now_add=True, blank=True, null=True)
    photographer = models.ForeignKey(Photographer, related_name = 'liked_by')
    photo = models.ForeignKey(Photo, null=True)

class Activity(models.Model):
    actor = models.ForeignKey(Photographer, related_name = 'actor')
    receiver = models.ForeignKey(Photographer, related_name …
Run Code Online (Sandbox Code Playgroud)

django feed django-aggregation news-feed tastypie

17
推荐指数
1
解决办法
1395
查看次数

Postman中的令牌密钥认证

如何在Postman中进行以下基于令牌的身份验证调用?

curl -H "Authorization: ApiKey dan:ab104c54c6d06fa5bc17e38059c1b814ee9c3b43" -F "image=/path_to_photo/image.jpg" http://localhost:8000/api/photo/ -v
Run Code Online (Sandbox Code Playgroud)

这不起作用:

在此输入图像描述

这是curl通话的输出:

dan@dan-iMac:~/app$ curl -H "Authorization: ApiKey dan:ab104c54c6d06fa5bc17e38059c1b814ee9c3b43" -F "image=/path_to_photo/image.jpg" http://localhost:8000/api/photo/ -v
* Hostname was NOT found in DNS cache
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8000 (#0)
> POST /api/photo/ HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:8000
> Accept: */*
> Authorization: ApiKey dan:ab104c54c6d06fa5bc17e38059c1b814ee9c3b43
> Content-Length: 164
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=------------------------bbe8b5cf6a427342
> 
* Done waiting for 100-continue
* HTTP 1.0, assume …
Run Code Online (Sandbox Code Playgroud)

tastypie postman

17
推荐指数
1
解决办法
3万
查看次数

如何在TastyPie中使用外键创建新资源

我还是tastypie的新手,但它看起来像一个非常整洁的图书馆.不幸的是,我遇到了一些困难.

我有两个模型,以及与这些模型相关的两个资源:

class Container(models.Model):
    pass

class ContainerItem(models.Model):
    blog = models.ForeignKey('Container', related_name='items')

# For testing purposes only
class ContainerResource(ModelResource):
    class Meta:
        queryset = Container.objects.all()
        authorization = Authorization()

class ContainerItemResource(ModelResource):
    class Meta:
        queryset = ContainerItem.objects.all()
        authorization = Authorization()
Run Code Online (Sandbox Code Playgroud)

Container通过jQuery 创建了一个对象:

var data = JSON.stringify({});

$.ajax({
    url: 'http://localhost:8000/api/v1/container/',
    type: 'POST',
    contentType: 'application/json',
    data: data,
    dataType: 'json',
    processData: false
});
Run Code Online (Sandbox Code Playgroud)

但是,当我去创建一个时ContainerItem,我收到此错误:

container_id may not be NULL
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:当存在ForeignKey关系时,如何创建新资源?

django django-models tastypie

16
推荐指数
1
解决办法
6496
查看次数

使用Django的iOS应用程序

所以我们目前有一个使用Django创建的网站.现在,我们想创建一个使用相同后端的原生iOS应用程序,因此我们不必重新编写整个代码.根据我的理解,有两种替代路线:

1)直接调用Django URL,然后调用一个函数.在该函数中,使用编码的JSON数据创建HTTPResponse并将其发回.

2)从Django服务器创建一个类似于Tastypie的REST服务.但是,除了对对象进行直接的GET调用之外,我没有看到我们如何在TastyPie的Django模型中调用自定义函数.我们甚至可以这样做吗?

我发现令人惊讶的是,没有很多关于使用现有后端(如Django或RoR)从iOS使用Web服务的信息.例如,我知道Instagram使用Django,但他们如何从iOS与他们的服务器进行通信?!

非常感谢!

django ios restkit tastypie

16
推荐指数
2
解决办法
1万
查看次数

使用多个值进行Tastypie过滤

我有一个关于过滤tastypie的简单问题.

我想过滤多个值.例如:

/api/v1/message/?accountId=1,5,12

这不起作用.知道我怎么能这样做吗?

我需要使用高级过滤吗?如果是,我该如何创建这样的过滤器?一个简单的puesdo代码的简单例子将是伟大的!

谢谢!

api django rest tastypie

15
推荐指数
3
解决办法
9515
查看次数

DataTables:自定义响应处理

我开始工作AngularJSDataTables,不知是否可以定制响应DataTables期待.DataTables插件的当前预期是这样的:

{
    "draw": 1,
    "recordsTotal": 57,
    "recordsFiltered": 5,
    "data": [...]
}
Run Code Online (Sandbox Code Playgroud)

在服务器端,API正在处理 django-tastypie

服务器的响应是:

{
     meta: {
        limit: 20,
        next: null,
        offset: 0,
        previous: null,
        total_count: 2
     },

     objects: [...]
 }
Run Code Online (Sandbox Code Playgroud)

那么,有没有办法调整Datatables插件来接受/映射这个响应,或者我必须找到一种方法来向api添加预期的字段?

到目前为止我已经这样做了:

    var deptTable = angular.element('#deptManagementTable').DataTable({
        processing: true,
        serverSide: true,
        pagingType: "simple_numbers",
        ajax: {
            url: "/client/api/v1/departments/",
            data: function(d) {
                d.limit = d.length;
                d.offset = d.start;
                d.dept_name__icontains = d.search.value;
            },
            dataSrc: function(json) {
                for (var i=0, len=json.objects.length ; i<len ; i++) {
                    json.objects[i].DT_RowId = …
Run Code Online (Sandbox Code Playgroud)

django ajax datatable tastypie angularjs

15
推荐指数
1
解决办法
1万
查看次数

Django升级后单元测试失败

我试图将Django项目从1.8版带到1.11版.除了单元测试之外,几乎所有东西看起来都很好.我们有一个基础测试类继承自Django TestCase和Tastypie mixin.基类在setUp()中有一些代码

class BaseApiTest(ResourceTestCaseMixin, django.test.TestCase):
    def setUp(self):
        super().setUp()
        self.username = "secret_user"
        self.password = "sekret"
        self.email = "secret@mail.com"
        self.first_name = "FirstName"
        self.last_name = "LastName"
        self.user = User.objects.create_superuser(
            self.username,
            self.username,
            self.password
        )
Run Code Online (Sandbox Code Playgroud)

应用程序特定的测试将继承基本测试并执行类似的操作

class TheAPITest(BaseApiTest):
    def setUp(self):
        super().setUp()
        # more setup goes here
Run Code Online (Sandbox Code Playgroud)

所以,在Django 1.8.x下,这很好用.但是在1.11.x下,所有这些都给我一个错误User.objects.create_superuser() line.

django.db.utils.InterfaceError: connection already closed

我一直在阅读发行说明,但是在1.8和1.11之间发生了太多的事情.我缺少一些简单的东西吗?

python django django-unittest tastypie python-unittest

15
推荐指数
1
解决办法
888
查看次数

Django Tastypie:如何使用API​​密钥进行身份验证

我正在使用TastyPie制作内部API.我有

from tastypie.authentication import ApiKeyAuthentication
class MyResource(ModelResource):
  Meta:
    authentication = ApiKeyAuthentication()
Run Code Online (Sandbox Code Playgroud)

禁用Auth规则后,我的API运行良好.有了它,无论我尝试什么,我都会收到401(未经授权)的回复.

我确信这是一旦你看到它在行动中非常明显的事情之一,但在此期间,请告知如何提出请求(GET).

python django tastypie

14
推荐指数
1
解决办法
1万
查看次数

使用非AMD兼容的javascript模块与require.js?

我正在使用require.js来帮助组织我的Backbone.js应用程序.

我正在试图找出使用与require.js不兼容的第三方javascript库的正确方法

问题中的库是backbone-tastypie.js.基本上,库所做的是monkeypatch Backbone的一些原型方法,以便为TastyPie Django REST框架提供更简单的支持.它通过直接操作全局命名空间中的Backbone对象来实现.

但是,由于我使用Backbone.js作为require.js模块,因此当该库尝试访问它时它不可用.

如何在Backbone范围内导入此主干 - tastypie?

javascript requirejs backbone.js tastypie

14
推荐指数
2
解决办法
9447
查看次数

Tastypie文档生成

我正在尝试使用auto-doc工具为tastypie REST API生成API文档.我尝试过Tastytool,但似乎没有显示api的结果参数,而是模型的列.然后我尝试Sphinx似乎更有前途,因为Tastypie支持Sphinx,但我找不到一个示例来显示在代码中为API放置注释的位置和方式,并将它们生成到文档中.

任何人都可以分享一些有关正确撰写评论的信息或示例,并为基于Tastypie的API生成Sphinx文档?谢谢.

django documentation python-sphinx tastypie

14
推荐指数
1
解决办法
2789
查看次数