Questions tagged «django-rest-framework»

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

6
Django rest框架,在同一ModelViewSet中使用不同的序列化器
我想提供两个不同的序列化器,但仍然能够从以下所有功能中受益ModelViewSet: 当查看对象列表时,我希望每个对象都有一个重定向到其详细信息的url,并使用__unicode __目标模型来显示其他所有关系。 例: { "url": "http://127.0.0.1:8000/database/gruppi/2/", "nome": "universitari", "descrizione": "unitn!", "creatore": "emilio", "accesso": "CHI", "membri": [ "emilio", "michele", "luisa", "ivan", "saverio" ] } 查看对象的详细信息时,我想使用默认值 HyperlinkedModelSerializer 例: { "url": "http://127.0.0.1:8000/database/gruppi/2/", "nome": "universitari", "descrizione": "unitn!", "creatore": "http://127.0.0.1:8000/database/utenti/3/", "accesso": "CHI", "membri": [ "http://127.0.0.1:8000/database/utenti/3/", "http://127.0.0.1:8000/database/utenti/4/", "http://127.0.0.1:8000/database/utenti/5/", "http://127.0.0.1:8000/database/utenti/6/", "http://127.0.0.1:8000/database/utenti/7/" ] } 我设法按照以下方式完成了所有这些工作: serializers.py # …

2
Django REST框架:非模型序列化器
我是Django REST框架的初学者,需要您的建议。我正在开发Web服务。该服务必须提供与其他服务的REST接口。我需要实现的REST接口不能直接与我的模型一起使用(我的意思是获取,放置,发布,删除操作)。相反,它为其他服务提供了一些计算结果。根据请求,我的服务会进行一些计算,只是将结果返回(不将结果存储在自己的数据库中)。 以下是我对如何实现REST接口的理解。纠正我,如果我错了。 创建进行计算的类。将其命名为“ CalcClass”。CalcClass在其工作中使用模型。 计算所需的参数传递给构造函数。 实现calc操作。它以“ ResultClass”的形式返回结果。 创建ResultClass。 源自对象。 它仅具有包含calc结果的属性。 计算结果的一部分表示为元组的元组。据我了解,最好进一步序列化为这些结果实现一个单独的类,并将此类对象的列表添加到ResultClass中。 为ResultClass创建序列化器。 从序列化器派生。 calc结果是只读的,因此主要将Field类用于字段,而不是专门的类(例如IntegerField)。 我不应该在ResultClass或Serializer上都使用save()方法,因为我不会存储结果(我只想根据要求返回它们)。 用于嵌套结果的Impl序列化器(请记住上面提到的元组的元组)。 创建视图以返回计算结果。 从APIView派生。 只需要get()。 在get()中创建具有从请求中检索到的参数的CalcClass,调用其calc(),获取ResultClass,创建Serializer并将ResultClass传递给它,返回Response(serializer.data)。 网址 我的情况下没有api根。我应该只有URL才能获得各种计算结果(带diff参数的计算)。 添加调用format_suffix_patterns进行api浏览。 我错过了什么?该方法总体上正确吗?


3
如何使用Django Rest Framework包含相关的模型字段?
假设我们有以下模型: class Classroom(models.Model): room_number = [....] class Teacher(models.Model): name = [...] tenure = [...] classroom = models.ForeignKey(Classroom) 假设不是通过ManyRelatedPrimaryKeyField函数获得这样的结果: { "room_number": "42", "teachers": [ 27, 24, 7 ] }, 让它返回包含完整相关模型表示的内容,例如: { "room_number": "42", "teachers": [ { 'id':'27, 'name':'John', 'tenure':True }, { 'id':'24, 'name':'Sally', 'tenure':False }, ] }, 这可能吗?如果是这样,怎么办?这是一个坏主意吗?


7
Django REST框架:向ModelSerializer添加其他字段
我想序列化一个模型,但想包含一个附加字段,该字段要求在要序列化的模型实例上进行一些数据库查找: class FooSerializer(serializers.ModelSerializer): my_field = ... # result of some database queries on the input Foo object class Meta: model = Foo fields = ('id', 'name', 'myfield') 什么是正确的方法?我看到您可以将额外的“上下文”传递给序列化程序,是在上下文字典中传递附加字段的正确答案吗?使用这种方法,获取我需要的字段的逻辑不会与序列化程序定义完全独立,这是理想的,因为每个序列化实例都需要my_field。在DRF序列化程序文档的其他地方,它表示 “额外字段可以对应于模型上的任何属性或可调用的属性”。我所说的是多余的领域吗?我应该在Foo的模型定义中定义一个返回my_field值的函数,并在序列化程序中将my_field连接到该可调用项吗?看起来像什么? 在此先感谢您,如有必要,我们很乐意澄清问题。


7
在django-rest-framework中禁用ViewSet中的方法
ViewSets 具有自动列出,检索,创建,更新,删除,...的方法 我想禁用其中一些,我想出的解决方案可能不是一个好方法,因为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)

5
TemplateDoesNotExist-Django错误
我正在使用Django Rest Framework。而且我不断出错 Exception Type: TemplateDoesNotExist Exception Value: rest_framework/api.html 我不知道我怎么了。这是我第一次尝试使用REST Framework。这是代码。 views.py import socket, json from modules.data.models import * from modules.utils import * from rest_framework import status from rest_framework.decorators import api_view from rest_framework.response import Response from modules.actions.serializers import ActionSerializer @api_view(['POST']) @check_field_exists_wrapper("installation") def api_actions(request, format = None): action_type = request.POST['action_type'] if …

9
RESTful API的令牌身份验证:令牌是否应该定期更改?
我正在使用Django和django-rest-framework构建RESTful API 。 作为身份验证机制,我们选择了“令牌身份验证”,而我已经按照Django-REST-Framework的文档进行了实现,问题是,应用程序是否应该定期更新/更改令牌,如果可以,怎么做?是需要续签令牌的移动应用程序,还是应该由网络应用程序自主执行? 最佳做法是什么? 有人在Django REST Framework方面经验丰富,可以提出技术解决方案吗? (最后一个问题的优先级较低)

12
Django Rest Framework移除CSRF
我知道有关于Django Rest Framework的答案,但是我找不到解决问题的方法。 我有一个具有身份验证和某些功能的应用程序。我向其中添加了一个新应用程序,该应用程序使用Django Rest Framework。我只想在此应用程序中使用库。我也想发出POST请求,并且总是收到以下响应: { "detail": "CSRF Failed: CSRF token missing or incorrect." } 我有以下代码: # urls.py from django.conf.urls import patterns, url urlpatterns = patterns( 'api.views', url(r'^object/$', views.Object.as_view()), ) # views.py from rest_framework.views import APIView from rest_framework.response import Response from django.views.decorators.csrf import csrf_exempt class Object(APIView): @csrf_exempt def post(self, …

3
在Django Rest Framework的响应中包括中介(通过模型)
我有一个关于通过模型处理m2m /及其在django rest框架中的演示的问题。让我们举一个经典的例子: models.py: from django.db import models class Member(models.Model): name = models.CharField(max_length = 20) groups = models.ManyToManyField('Group', through = 'Membership') class Group(models.Model): name = models.CharField(max_length = 20) class Membership(models.Model): member = models.ForeignKey('Member') group = models.ForeignKey('Group') join_date = models.DateTimeField() serializers.py: imports... class MemberSerializer(ModelSerializer): class Meta: model = Member class GroupSerializer(ModelSerializer): …

17
Django Rest Framework-无法使用视图名称“ user-detail”解析超链接关系的URL
我正在Django Rest Framework中建立一个项目,用户可以登录查看其酒窖。我的ModelViewSets工作正常,突然我收到了一个令人沮丧的错误: 无法使用视图名称“用户详细信息”解析超链接关系的URL。您可能无法在API中包含相关模型,或者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, …

1
何时使用序列化器的create()和ModelViewset的create()perform_create()
我想澄清django-rest-framework有关创建模型对象的给定文档。到目前为止,我发现有3种方法来处理此类事件。 序列化器的create()方法。这是文档 class CommentSerializer(serializers.Serializer): def create(self, validated_data): return Comment.objects.create(**validated_data) ModelViewsetcreate()方法。文献资料 class AccountViewSet(viewsets.ModelViewSet): queryset = Account.objects.all() serializer_class = AccountSerializer permission_classes = [IsAccountAdminOrReadOnly] ModelViewsetperform_create()方法。文献资料 class SnippetViewSet(viewsets.ModelViewSet): def perform_create(self, serializer): serializer.save(owner=self.request.user) 这三种方法很重要,具体取决于您的应用程序环境。 但是什么时候我们需要使用每个create() / perform_create()函数?另一方面,我发现有人要求为单个发布请求调用modelviewsetcreate()和serializer的两个create方法create()。 希望任何人都可以分享他们的一些知识来进行解释,这肯定会对我的开发过程有所帮助。

8
Django Rest Framework:动态返回字段子集
问题 如博客文章“设计实用的RESTful API的最佳实践”中的建议,我想向fields基于Django Rest Framework的API 添加查询参数,该参数使用户只能为每个资源选择字段的子集。 例 序列化器: 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" }, ... …

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.