我有一个模型评论,创建时可能会或可能不会创建新用户。出于这个原因,我的API在创建新评论时需要密码字段。这是我的评论模型:classComment(models.Model):commenter=models.ManyToManyField(Commenter)email=models.EmailField(max_length=100)author=models.CharField(max_length=100)url=models.URLField(max_length=200)content=models.TextField(blank=True,null=True)ip=mod
我正在使用DRF(DjangoRestFramework)。我声明了一个ModelViewSet,现在我想在上面添加过滤器。classGoodsViewSet(viewsets.ModelViewSet):classFilter(FilterSet):classMeta:model=m.Goodsfilter_class=Filterfilter_backends=(SearchFilter,Filter)search_fields=['name',]queryset=m.Goods.objects.all()serializer_class=s.GoodsSerializer看到我声
我正在关注article设置一个新的DjangonREST框架项目。我让它工作了,但我想将默认主页标题从DjangoRESTFrameworkv3.3.2更改为我自己的,我确信这只是某个地方的设置,但似乎不太明显是哪一个,任何见解将不胜感激。谢谢。更新基于@macro和这个article的提示,我让它与api.html一起工作。谢谢。 最佳答案 找到这个答案后-终于在文档中找到了它。如果有人正在搜索-我建议查看此browsableapisection在文档中。来自文档:Tocustomizethedefaultstyle,creat
我想向我的api路由器添加一个url命名空间,但是当我这样做时,路由器仍然会查找没有命名空间的url:router=DefaultRouter()router.register(r'users',UserViewSet)router.register(r'events',EventViewSet)router.register(r'comments',CommentViewSet)urlpatterns=patterns('apiroot.views',url(r'^',include(router.urls,namespace='api')),)可浏览的api查找url名称,如'us
我想知道测试使用数据库后端的RESTAPI的最佳/不同方法。我已经使用Python中的Flask开发了我的API,并且想使用unittest或nose。但我的问题是,某些资源首先需要另一个资源来创建它们。有没有办法说要测试博客文章的创建需要另一个涉及作者创建的测试成功? 最佳答案 有两种标准方法可以处理依赖于其他事物(对象、函数调用等)的测试。您可以使用模拟来代替您正在测试的代码所依赖的对象。您可以加载夹具或在测试设置中进行创建/调用。有些人喜欢“经典”单元测试,其中只测试代码的“单元”。在这些情况下,您通常使用模拟和stub来替换
我当然已经查看了文档,但想知道是否有人可以更简洁地解释这些领域之间用例和应用程序的差异。为什么一个人会使用一个领域而不是另一个领域?对于OneToOne关系,这些字段之间会有区别吗? 最佳答案 您可以使用HyperlinkedIdentityField链接到当前正在序列化的对象,并使用HyperlinkedRelatedField链接到与相关的对象一个正在连载。因此,对于一对一关系、外键关系、多对多关系以及基本上涉及关系的任何其他关系(在Django模型中),您需要使用HyperlinkedRelatedField。唯一一次使用Hy
我需要将生成的文件下载作为DjangoRESTFramework响应返回。我尝试了以下方法:defretrieve(self,request,*args,**kwargs):template=webodt.ODFTemplate('test.odt')queryset=Pupils.objects.get(id=kwargs['pk'])serializer=StudentSerializer(queryset)context=dict(serializer.data)document=template.render(Context(context))doc=converter().c
我需要将用户附加到请求,这似乎是一件很常见的事情,但事实证明这几乎是不可能的。DjangoRESTFramework的文档建议使用序列化程序类的pre_save方法,我这样做了,但是在调用serializer.is_valid()时它不会被调用,这使得它有点毫无值(value),因为没有用户序列化程序验证失败的字段。我看过一些建议,但它们看起来像是疯狂的hack和/或不起作用。另外,我觉得这是一项太常见的任务,不需要我看到人们建议的所有东西。我不能是唯一需要将用户附加到在REST请求中创建的对象的人。 最佳答案 假设您正在使用此处描
我有一个ModelViewSet在Django的REST框架中,它使我能够通过以下地址执行POST和GET:api/v1/users这些用户与评论表有反向关系,我希望能够通过URL访问这些评论:api/v1/users//comments我能够通过设置自定义@detail_route来做到这一点通过覆盖queryset和serializer_class但它只适用于GET请求。如果我尝试通过RESTFramework的管理部分发布新评论,我会收到一条错误通知,指出“'ListSerializer'对象不可迭代”这是我的代码:classUserViewSet(viewsets.ModelV
Djangorestframework:CustomAuthentication我想在我的Django应用程序中使用自定义身份验证,但找不到如何应用它。文档中给出的示例对我来说很清楚,但他们没有提到在哪里创建这个新类以及如何使用它。 最佳答案 如何在DRF中实现自定义身份验证方案?要实现自定义身份验证方案,我们需要继承DRF的BaseAuthentication类并覆盖.authenticate(self,request)方法。如果身份验证成功,该方法应返回(user,auth)的二元组,否则返回None。在某些情况下,我们可能会从