Questions tagged «django-rest-framework»

一个强大而灵活的工具包,用于构建RESTful Web API。Django是一个高级Python Web框架,鼓励快速开发和简洁实用的设计。它由经验丰富的开发人员构建,它解决了Web开发的大部分麻烦,因此您可以专注于编写应用程序而无需重新发明轮子。它是免费和开源的。


15
Django Rest Framework文件上传
我正在使用Django Rest Framework和AngularJs上传文件。我的视图文件如下所示: class ProductList(APIView): authentication_classes = (authentication.TokenAuthentication,) def get(self,request): if request.user.is_authenticated(): userCompanyId = request.user.get_profile().companyId products = Product.objects.filter(company = userCompanyId) serializer = ProductSerializer(products,many=True) return Response(serializer.data) def post(self,request): serializer = ProductSerializer(data=request.DATA, files=request.FILES) if serializer.is_valid(): serializer.save() return Response(data=request.DATA) 由于post方法的最后一行应返回所有数据,因此我有几个问题: 如何检查里面是否有东西request.FILES? 如何序列化文件字段? 我应该如何使用解析器?

10
Django Rest Framework-未提供身份验证凭据
我正在使用Django Rest Framework开发API。我试图列出或创建“订单”对象,但是当我尝试访问控制台时,出现此错误: {"detail": "Authentication credentials were not provided."} 观看次数: from django.shortcuts import render from rest_framework import viewsets from django.contrib.auth.models import User from rest_framework.renderers import JSONRenderer, YAMLRenderer from rest_framework.response import Response from rest_framework.views import APIView from order.models import * from API.serializers import * from rest_framework.permissions import IsAuthenticated class OrderViewSet(viewsets.ModelViewSet): model …

2
使用模型属性的ModelSerializer
我正在尝试序列化包含我也要序列化的属性字段的模型。 models.py: class MyModel(models.Model): name = models.CharField(max_length=100) slug = models.AutoSlugField(populate_from='name') @property def ext_link(self): return "/".join([settings.EXT_BASE_URL, self.slug]) serializers.py: class MyModelSerializer(serializers.ModelSerializer): class Meta: model = MyModel fields = ('name', 'ext_link') 尝试获取相关的URL时,我在该ext_link属性上遇到了一个序列化程序异常(KeyError)。 我如何序列化ext_link属性?

3
如何在Django REST Framework中更改字段名称
我正在尝试像在SQL中的别名一样在DRF序列化器中更改“模型”字段名称。我尝试了不同的方法,但无法成功。 models.py class Park(models.Model): name = models.CharField(max_length=256) alternate_name = models.CharField(max_length=256, blank=True) objects = models.GeoManager() class Meta: db_table = u'p_park' def __unicode__(self): return '%s' % self.name def alias_alternate_name(self): return self.alternate_name serializers.py class ParkSerializer(serializers.ModelSerializer): location = serializers.Field(source='alias_alternate_name') #location = serializers.SerializerMethodField(source='alias_alternate_name') #alternate_name as location class Meta: model = Park fields = ('id', 'name', …

8
Django Rest Framework-如何在ModelSerializer中添加自定义字段
我创建了一个,ModelSerializer并希望添加一个不属于我的模型的自定义字段。 我在此处找到了添加其他字段的说明,并尝试了以下操作: customField = CharField(source='my_field') 当我添加此字段并调用我的validate()函数时,则此字段不是attr字典的一部分。attr包含所有指定的模型字段,除了额外的字段。因此,我无法在覆盖的验证中访问此字段,可以吗? 当我将此字段添加到字段列表中时,如下所示: class Meta: model = Account fields = ('myfield1', 'myfield2', 'customField') 然后我得到一个错误,因为customField它不是我的模型的一部分-正确的是因为我只想为此序列化器添加它。 有什么方法可以添加自定义字段?

11
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表示形式: class CategorySerializer(serializers.HyperlinkedModelSerializer): parentCategory = serializers.PrimaryKeyRelatedField() subcategories = serializers.ManyRelatedField() class Meta: model = Category fields = ('parentCategory', 'name', 'description', 'subcategories') 现在,我要做的是让子类别列表具有子类别的内联json表示形式而不是其ID。django-rest-framework我该怎么做?我试图在文档中找到它,但它似乎不完整。

10
Django:TemplateDoesNotExist(rest_framework / api.html)
在我的视图函数中,我想返回一个json对象(data1)和一些text / html(窗体)。这可能吗? 我的密码 @api_view(['POST']) @permission_classes((AllowAny,)) def create_user(request): if request.is_ajax(): if request.method == 'POST': serializer = SignupSerializer(data=request.data) print 'ser' print serializer if not serializer.is_valid(): return Response(serializer.errors,\ status=status.HTTP_400_BAD_REQUEST) else: serializer.save() data={'status': 'Created','message': 'Verification email has been sent to your email. Please verify your account.'} return Response(data, template_name='register.html') else: return HttpResponse('hello world') …

7
使用django-rest-framework序列化程序检索外键值
我正在使用django rest框架来创建API。我有以下型号: class Category(models.Model): name = models.CharField(max_length=100) def __unicode__(self): return self.name class Item(models.Model): name = models.CharField(max_length=100) category = models.ForeignKey(Category, related_name='items') def __unicode__(self): return self.name 要为类别创建序列化器,请执行以下操作: class CategorySerializer(serializers.ModelSerializer): items = serializers.RelatedField(many=True) class Meta: model = Category ...这将为我提供: [{'items': [u'Item 1', u'Item 2', u'Item 3'], u'id': 1, 'name': u'Cat 1'}, {'items': [u'Item …

7
Python Django Rest Framework UnorderedObjectListWarning
我从Django 1.10.4升级到1.11.1,突然我在运行测试时收到大量这些消息: lib/python3.5/site-packages/rest_framework/pagination.py:208: UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list: <QuerySet [<Group: Requester>]> paginator = self.django_paginator_class(queryset, page_size) 我已经将其追溯到Django Pagination模块:https : //github.com/django/django/blob/master/django/core/paginator.py#L100 它似乎与我的查询集代码有关: return get_user_model().objects.filter(id=self.request.user.id) 我如何找到有关此警告的更多详细信息?似乎我需要order_by(id)在每个过滤器的末尾添加一个,但是我似乎找不到要添加order_by的代码(因为警告不会返回堆栈跟踪,因此它在测试期间会随机发生跑)。 谢谢! 编辑: 因此,使用@KlausD。详细提示,我查看了一个导致此错误的测试: response = self.client.get('/api/orders/') 这可以解决,OrderViewSet但是get_queryset中的任何事情都不会导致它,而序列化程序类中的任何原因都不会导致它。我还有其他使用相同代码来获取/ api / orders的测试,而这些测试不会导致它.... get_queryset之后DRF会做什么? https://github.com/encode/django-rest-framework/blob/master/rest_framework/pagination.py#L166 如果我对分页进行追溯,那么我会得到一堆与Django rest框架有关的东西,但是没有任何东西可以指出我的哪些查询正在触发顺序警告。

5
如何在Django Rest Framework中过滤嵌套的序列化器?
在Django Rest Framework中,当一个序列化器嵌套在另一个序列化器中时,如何过滤它? 我的过滤器被强加在DRF视图集中,但是当您从另一个序列化器内部调用序列化器时,嵌套序列化器的视图集将永远不会被调用,因此嵌套结果看起来是未经过滤的。 我尝试在原始视图集上添加过滤器,但是它似乎无法过滤嵌套结果,因为嵌套结果被称为单独的预提取查询。(您看到嵌套的序列化程序是反向查找。) 是否可以在嵌套序列化器本身中添加get_queryset()覆盖(将其移出视图集),以在其中添加过滤器?我也尝试过,没有运气。 这是我尝试过的方法,但似乎没有被调用: class QuestionnaireSerializer(serializers.ModelSerializer): edition = EditionSerializer(read_only=True) company = serializers.StringRelatedField(read_only=True) class Meta: model = Questionnaire def get_queryset(self): query = super(QuestionnaireSerializer, self).get_queryset(instance) if not self.request.user.is_staff: query = query.filter(user=self.request.user, edition__hide=False) return query

3
如果用户尝试使用不正确的用户名/密码但格式正确的登录,返回什么合适的HTTP状态代码?
这里发布了一个类似的问题:REST API服务针对验证失败返回什么合适的HTTP状态代码? 上面线程中的答案指出:“例如,如果URI应该具有ISO-8601日期,而您发现它的格式错误或引用的日期是2月31日,则您将返回HTTP 400。实体主体中格式正确的XML,并且无法解析。” 但是,如果用户提交了正确格式的数据会怎样?我的意思是,用户为用户名和密码提交了简单的字母字符串/文本(这对我的应用程序完全有效)。唯一的问题是密码与用户名不匹配。在这种情况下,400将是不正确的,因为它是完全有效的语法并且格式正确。 401不正确(如此处的建议:哪个HTTP状态代码表示用户名或密码不正确?),因为用户没有尝试访问任何页面,他只是在尝试登录和输入不匹配的数据。 如果您回头看我链接到的第一篇文章,第二个回答指出422是正确的响应(并且对我来说看起来是正确的),但是,我使用的是Django Rest Framework,而422不是状态代码的一部分(可以在以下位置找到DRF的一部分状态代码列表:http : //www.django-rest-framework.org/api-guide/status-codes/#client-error-4xx) 404的外观也不正确,因为已成功接受数据并且未拒绝数据。 话虽如此,应该使用的真正正确答案是什么?

7
Django rest框架序列化多对多字段
如何将多对多字段序列化为列表,然后通过rest框架返回它们?在下面的示例中,我尝试返回该帖子以及与其关联的标签列表。 models.py class post(models.Model): tag = models.ManyToManyField(Tag) text = models.CharField(max_length=100) serializers.py class PostSerializer(serializers.ModelSerializer): class Meta: model = Post fields = ("text", "tag"??) views.py class PostViewSet(viewsets.ReadOnlyModelViewSet): queryset = Post.objects.all() serializer_class = PostSerializer

25
django.db.migrations.exceptions.InconsistentMigrationHistory
当我python manage.py migrate在Django项目上运行时,出现以下错误: Traceback (most recent call last): File "manage.py", line 22, in <module> execute_from_command_line(sys.argv) File "/home/hari/project/env/local/lib/python2.7/site- packages/django/core/management/__init__.py", line 363, in execute_from_command_line utility.execute() File "/home/hari/project/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 355, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/hari/project/env/local/lib/python2.7/site-packages/django/core/management/base.py", line 283, in run_from_argv self.execute(*args, **cmd_options) File "/home/hari/project/env/local/lib/python2.7/site-packages/django/core/management/base.py", line 330, in execute output = self.handle(*args, **options) File "/home/hari/project/env/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", …

4
授权凭证已剥离-django,弹性beantalk,oauth
我在django中使用django-rest-framework实现了REST api,并使用oauth2进行身份验证。 我测试了: 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 Elastic beantalk实例时,我收到了: { "detail" : "Authentication credentials were not provided." }

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.