Tag: django rest framework

Django Rest框架 – 如何在ModelSerializer中添加自定义字段

我创build了一个ModelSerializer并想添加一个不属于我的模型的自定义字段。 我发现了一个描述, 在这里添加额外的字段,我尝试了以下内容: customField = CharField(source='my_field') 当我添加这个字段并调用我的validate()函数,那么这个字段不是attr dict的一部分。 attr包含除了额外字段外的所有模型字段。 所以我不能在我覆盖的validation中访问这个字段,可以吗? 当我将这个字段添加到字段列表中,如下所示: class Meta: model = Account fields = ('myfield1', 'myfield2', 'customField') 那么我得到一个错误,因为customField不是我的模型的一部分 – 什么是正确的,因为我想只为这个序列化程序添加它。 有没有办法添加一个自定义字段?

Django Rest框架:dynamic返回字段的子集

问题 正如在devise一个实用的RESTful API的blogpost 最佳实践中推荐的,我想添加一个fields查询参数给一个基于Django Rest Framework的API,使用户只能为每个资源select一个字段子集。 例 串行: class IdentitySerializer(serializers.HyperlinkedModelSerializer): class Meta: model = models.Identity fields = ('id', 'url', 'type', 'data') 常规查询将返回所有字段。 GET /identities/ [ { "id": 1, "url": "http://localhost:8000/api/identities/1/", "type": 5, "data": "John Doe" }, … ] 带有fields参数的查询应只返回字段的一个子集: GET /identities/?fields=id,data [ { "id": 1, "data": "John Doe" }, … ] 具有无效字段的查询应忽略无效字段或抛出客户端错误。 目标 不知何故,这是可能的吗? 如果不是,那么实现这个最简单的方法是什么? […]

授权证书剥离 – django,弹性beanstalk,oauth

我用django-rest-framework在django中实现了一个REST api,并使用oauth2进行身份validation。 我testing了: curl -X POST -d "client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=password&username=YOUR_USERNAME&password=YOUR_PASSWORD" http://localhost:8000/oauth2/access_token/ 和 curl -H "Authorization: Bearer <your-access-token>" http://localhost:8000/api/ 在本地主机上,成功的结果与文档一致。 当把这个推到现有的AWS弹性beanstalk实例时,我收到: { "detail" : "Authentication credentials were not provided." }

糟糕的Django / uwsgi性能

我正在用nginx&uwsgi运行一个django应用程序。 以下是我如何运行uwsgi: sudo uwsgi -b 25000 –chdir=/www/python/apps/pyapp –module=wsgi:application –env DJANGO_SETTINGS_MODULE=settings –socket=/tmp/pyapp.socket –cheaper=8 –processes=16 –harakiri=10 –max-requests=5000 –vacuum –master –pidfile=/tmp/pyapp-master.pid –uid=220 –gid=499 &nginxconfiguration: server { listen 80; server_name test.com root /www/python/apps/pyapp/; access_log /var/log/nginx/test.com.access.log; error_log /var/log/nginx/test.com.error.log; # https://docs.djangoproject.com/en/dev/howto/static-files/#serving-static-files-in-production location /static/ { alias /www/python/apps/pyapp/static/; expires 30d; } location /media/ { alias /www/python/apps/pyapp/media/; expires 30d; } location / { uwsgi_pass […]

在ViewSet中禁用一个方法,django-rest-framework

ViewSets有自动方法列出,检索,创build,更新,删除,… 我想禁用其中一些,我提出的解决scheme可能不是一个好的,因为OPTIONS仍然声明那些允许的。 任何想法如何以正确的方式做到这一点? class SampleViewSet(viewsets.ModelViewSet): queryset = api_models.Sample.objects.all() serializer_class = api_serializers.SampleSerializer def list(self, request): return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED) def create(self, request): return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)

如何使用Django Rest Framework创buildloginAPI?

我想创build一个loginAPI(或使用现有的一个,如果它已经预先捆绑)使用Djangorest框架。 不过,我完全不知所措。 每当我发送到Djangorest框架“login”的url发送请求,它只是发回可浏览的API模板页面… 我的configuration urls.py url(r'^api/v1/', include('rest_framework.urls', namespace='rest_framework')) settings.py REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.SessionAuthentication', ) } 我想要的是 请求: POST /api/v1/login username='name' pass='pass' 响应: 200 OK "{username: 'name', 'userId': '54321'}" set-cookie: sessionid="blahblah"

Django Rest Framework – 无法使用视图名称“user-detail”parsing超链接关系的URL

我正在Django Rest框架中build立一个项目,用户可以login查看他们的酒窖。 我的ModelViewSets工作得很好,突然之间,我得到了这个令人沮丧的错误: 无法使用视图名称“user-detail”parsing超链接关系的URL。 您可能未能在您的API中包含相关模型,或在此字段上错误地configuration了lookup_field属性。 追溯显示: [12/Dec/2013 18:35:29] "GET /bottles/ HTTP/1.1" 500 76677 Internal Server Error: /bottles/ Traceback (most recent call last): File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/django/core/handlers/base.py", line 114, in get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/viewsets.py", line 78, in view return self.dispatch(request, *args, **kwargs) File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 57, in wrapped_view return view_func(*args, **kwargs) File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/views.py", line […]

Django rest框架嵌套自引用对象

我有这样的模型: class Category(models.Model): parentCategory = models.ForeignKey('self', blank=True, null=True, related_name='subcategories') name = models.CharField(max_length=200) description = models.CharField(max_length=500) 我设法使用序列化程序获得所有类别的平面json表示forms: class CategorySerializer(serializers.HyperlinkedModelSerializer): parentCategory = serializers.PrimaryKeyRelatedField() subcategories = serializers.ManyRelatedField() class Meta: model = Category fields = ('parentCategory', 'name', 'description', 'subcategories') 现在我想要做的是为子类别列表有内联子类别,而不是他们的ID的JSON表示。 我怎么用django-rest-framework做到这一点? 我试图在文档中find它,但似乎不完整。

我如何应用filter到Django REST框架中的嵌套资源?

在我的应用程序中,我有以下模型: class Zone(models.Model): name = models.SlugField() class ZonePermission(models.Model): zone = models.ForeignKey('Zone') user = models.ForeignKey(User) is_administrator = models.BooleanField() is_active = models.BooleanField() 我正在使用Django REST框架创build一个资源,返回区域详细信息和嵌套资源,显示该区域的已validation用户的权限。 输出应该是这样的: { "name": "test", "current_user_zone_permission": { "is_administrator": true, "is_active": true } } 我已经创build了这样的序列化程序: class ZonePermissionSerializer(serializers.ModelSerializer): class Meta: model = ZonePermission fields = ('is_administrator', 'is_active') class ZoneSerializer(serializers.HyperlinkedModelSerializer): current_user_zone_permission = ZonePermissionSerializer(source='zonepermission_set') class Meta: model = […]

Django Rest框架中的用户authentication+ Angular.js Web应用程序

我正在开发一个web应用程序,用户可以login查看他们的在线酒窖。 我有Django REST模型设置,以及Angular中的前端devise,但是我很难将这些部分放在一起,而我的主要问题是用户身份validation。 我已经阅读了很多post在这里和各种教程,但我似乎无法find一步一步的方法来实现身份validation: 什么样的authentication应该使用(令牌,会话,其他?) 在服务器端如何pipe理身份validation(在UserModel或UserManager中是一个视图吗?) 我有一个自定义用户模型(使用电子邮件作为用户名)。 我可以使用通用的Djangologin方法,还是需要创build自己的? 如何在服务器和客户端之间pipe理身份validation过程? 据我所知,Angular在DRFvalidation用户名和密码匹配的URL上发出POST请求,并返回一个令牌或其他validation证据。 我觉得我很接近,但我需要一个更普遍的看法,这是如何工作把碎片放在一起。 提前致谢