是否有最佳实践为给定APIView或ViewSet的每个操作分配不同的权限?假设我定义了一些权限类,例如“IsAdmin”、“IsRole1”、“IsRole2”……,并且我想为单个操作授予不同的权限(例如,具有Role1的用户可以创建或检索,具有Role2的用户可以更新,只有管理员可以删除)。如何构建基于类的View,以便将权限类分配给“创建”、“列表”、“检索”、“更新”、“删除”操作?我试图这样做是为了有一个可以重复用于具有相同权限模式的不同表的类。 最佳答案 在DRF文档中,Note:Theinstance-levelhas
这个问题在这里已经有了答案:HowcanIregisterasingleview(notaviewset)onmyrouter?(2个回答)关闭5年前。我一直在使用DjangoREST框架开发REST后端。但是,我无法将APIView实例添加到Web可浏览API。documentation和previousanswer建议我所要做的就是添加一个文档字符串。它对我不起作用。我假设可浏览的API仅显示Viewset端点已向路由器注册。如果是这样,我如何将APIView类注册到路由器?以下是我当前的路由器代码:router=DefaultRouter(trailing_slash=False
我在我的网站上使用django-allauth进行社交登录。我还有一个由django-rest-framework提供支持的RESTAPI,用作移动应用程序的后端。有没有办法可以直接将allauth的身份验证后端插入RESTapi,以便验证(和注册)在移动应用中使用Facebook登录的用户?澄清一下:Facebook登录部分由原生SDK处理。我需要一个类似于POST/user的端点(即创建一个新用户),但将Facebookoauthtoken作为输入而不是电子邮件/密码等。 最佳答案 您可以使用DjangoRestAuth这取决于
来自文档:read_onlySetthistoTruetoensurethatthefieldisusedwhenserializingarepresentation,butisnotusedwhenupdatinganinstanceduringdeserialization.DefaultstoFalserequiredNormallyanerrorwillberaisedifafieldisnotsuppliedduringdeserialization.Settofalseifthisfieldisnotrequiredtobepresentduringdeserializat
我在DjangoREST框架中有一个序列化程序,定义如下:classQuestionSerializer(serializers.Serializer):id=serializers.CharField()question_text=QuestionTextSerializer()topic=TopicSerializer()现在我有两个使用上述序列化程序的APIView:classQuestionWithTopicView(generics.RetrieveAPIView):#Iwishtoincludeallthreefields-id,question_text#andtopic
出于调试目的,我想使用Django的日志记录机制来记录每个“到达”django-rest-framework门口的传入请求。Djagno通过以下方式(来自settings.py中的LOGGING部分)提供其请求的日志记录(仅“警告”日志级别及以上):'django.request':{'handlers':['mail_admins'],'level':'ERROR','propagate':False,},我希望实现这样的目标(注意:日志级别为DEBUG):'rest_framework.request':{'handlers':['logfile'],'level':'DEBUG'
我正在学习位于here的教程使用DjangoRestFramework,并且我不断收到关于某个字段的奇怪错误。我的models.py中有以下模型fromdjango.dbimportmodelsclassTask(models.Model):completed=models.BooleanField(default=False)title=models.CharField(max_length=100)description=models.TextField()然后是我在serializers.py中的序列化程序fromrest_frameworkimportserializersfr
我正在为QuerySet中的每个项目生成聚合:defget_queryset(self):fromdjango.db.modelsimportCountqueryset=Book.objects.annotate(Count('authors'))returnqueryset但我在JSON响应中没有得到计数。提前谢谢你。 最佳答案 接受的解决方案将在返回结果时多次访问数据库。对于每个结果,将对数据库进行count查询。问题是关于向序列化程序添加注释,这比对响应中的每个项目执行count查询更有效。解决方案:models.pyclas
可能相关:Whatdoesdjangorestframeworkmeantradeoffsbetweenviewvsviewsets?views和viewsets有什么区别?那么router和urlpatterns呢? 最佳答案 如果您的目标是标准行为和标准URL,ViewSets和Routers是加速API实现的简单工具。使用ViewSet您不必创建单独的View来获取对象列表和一个对象的详细信息。ViewSet将以一致的方式为您处理列表和详细信息。使用Router会将您的ViewSet连接到“标准化”(它在任何全局范围内都不是标
我有三个模型——文章、作者和推文。我最终需要使用DjangoREST框架来构建一个提要,该提要将使用文章和推文模型的所有对象聚合到一个逆时间顺序提要中。知道我会怎么做吗?我觉得我需要创建一个新的序列化程序,但我真的不确定。谢谢!编辑:这是我到目前为止所做的。app/serializers.py:classTimelineSerializer(serializers.Serializer):pk=serializers.Field()title=serializers.CharField()author=serializers.RelatedField()pub_date=seriali