我正在为移动应用程序开发DjangoRestFramework后端。API是私有(private)的,只会在内部使用。可浏览的API可以方便地帮助开发人员处理项目,但我想阻止任何未设置为项目管理员的人使用可浏览的界面。我意识到可浏览的管理员不会授予用户本来不会拥有的任何权限,但它确实有一些安全灰色区域(例如,对于具有外键关系的模型,HTML选择器字段会填充所有除非您特别指示它不要这样做,否则数据库中可能存在相关对象。因为这个应用程序处理敏感的用户数据,我宁愿向公众公开尽可能小的表面积,以减少我自己潜在错误疏忽的风险。有没有什么方法可以为非管理员用户禁用可浏览的API,而不是为所有人禁用
我有一个Profile模型,它与Django的User模型具有一对一的关系,我还有另一个模型,称为Permission(与Django的内部权限概念无关),它有一个Profile的外键。像这样:(为了简单起见,我已经删除了这里的大部分字段)fromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportUserasDjangoUserclassAccount(models.Model):name=models.CharField(max_length=200,db_index=True)classProfile(models.M
我只想在给定query_params时返回model_info,否则它应该给出一些错误消息。我尝试了下面的代码,但是当名称未在查询参数中传递时,它给我keyerror。fromrest_framework.validatorsimportValidationErrorclassModelSerializer(serializers.ModelSerializer):classMeta:model=ModelNamefields=('name','abbreviation')defvalidate_name(self,value):ifvalue:returnvalueelse:rais
我有一个标准的DRF网络应用程序,可以为其中一条路线输出CSV数据。呈现整个CSV表示需要一段时间才能完成。数据集非常大,所以我想要一个流式HTTP响应,这样客户端就不会超时。但是使用https://github.com/mjumbewu/django-rest-framework-csv/blob/2ff49cff4b81827f3f450fd7d56827c9671c5140/rest_framework_csv/renderers.py#L197中提供的示例并没有完全做到这一点。数据仍然是一个很大的有效载荷,而不是被分block,客户端最终在接收到字节之前等待响应。结构类似如下:
我正在尝试根据我的应用程序支持的所有URL的代码自动创建文档。我们完全使用客户端MVC,因此支持的每个URL本质上都是UI的RESTAPI。有没有一种简单的方法可以从这些URL生成文档?到目前为止,我已经编写了这个小模块,但我正在寻找比这更好的方法。如果已经存在类似的东西,我不想重新发明轮子。更新:请注意,目的是为网站的消费者提供公共(public)文档,而不是供内部使用。在这方面,对于每个URL,我们需要记录:-回应是什么,-接受哪些参数,-如果URL响应GET/POST或两者,等等。某些像(^$)这样简单重定向到主页的URL不应该被记录下来,所以我也需要一些排除机制。fromdja
我正在使用Flask-Restful构建REST服务。然后,iOS设备将连接到此REST后端以同步本地数据。该服务将通过https连接访问。REST服务是无状态的,用户必须根据每个请求进行身份验证。因此,用户名和密码将以明文格式发送到REST服务。后端将散列密码并检查数据库中现有的散列密码。api.add_resource(Records,'/rest/records///')现在我发现这种方法的一个问题是用户名和密码作为GETurl的一部分采用明文格式。服务器日志显然会跟踪这一点。现在,如果我的后端曾经被黑过,日志文件就会泄露所有用户名和密码。最好的解决方案是什么?我在想也许可以将用
我正在使用djangoREST框架构建API。为了测试此API,我正在使用pytest和测试客户端,如下所示:deftest_doesnt_find(self,client):resp=client.post(self.url,data={'name':'123'})assertresp.status_code==404或deftest_doesnt_find(self,client):resp=client.get(self.url,data={'name':'123'})assertresp.status_code==404在使用REST框架的一般GET、POST和DELETE类(
在Djangorest框架中,有没有办法有多个查找字段?我知道这听起来对REST不是很友好。我有一个Company模型,我想先通过他们的国家/地区列出它们,然后通过slug字段列出它们,例如:/companies///.有办法做到这一点吗? 最佳答案 像这样创建mixin:classMultipleFieldLookupMixin(object):defget_object(self):queryset=self.get_queryset()#Getthebasequerysetqueryset=self.filter_querys
我在DjangoRest框架中打开了分页,它看起来非常慢。Count看起来像是罪魁祸首,由于表中有数百万行,每次返回都需要数百毫秒。我正在使用postgresql作为数据库。有没有办法不计算行数并仍然使用分页?如果我手动过滤查询集,则在启用此功能之前性能很好。 最佳答案 问题是,用于计数的查询与用于获取数据的查询可能很复杂。这样比较浪费。PageNumberPagination在内部使用Django自己的Paginator。为了使计数查询更简单,请重写DRF使用的分页器类:fromdjango.core.paginatorimpor
目前,我有一个返回对象字典列表的ListAPIView:[{id:1,...},{id:2,...},...]我想将其更改为格式化为以id为键的字典:{"1":{id:1,...},"2":{id:2,...},...}如何使用DjangoRestFramework以这种方式自定义输出?目前我正在重新格式化客户端,但我想在服务器端进行。 最佳答案 我认为您可以在序列化程序中实现to_representation函数。classMySerializer(serializers.Serializer):id=serializers.Re