<p>这是一个非常古老的问题,卡尔顿·吉布森目前接受的答案只是GitHub上一个pull请求的链接。</p>
<p>当搜索web以使用带有名称空间的Django REST框架路由器时,它在结果中排名第一。关于这个话题,这似乎是唯一的疑问。<br/>
因为代码示例没有具体的答案,所以我想在这里添加我的解决方案。</p>
<p>让我们从OP的问题中找出<code>EventViewSet</code>。对于这个视图集,应该有一个模型类<code>Event</code>和一个模型序列化器<code>EventSerializer</code>。<br/>
<code>EventSerializer</code>可能是这样的:</p>
<pre><code>class EventSerializer(serializers.HyperlinkedModelSerializer):
# any other fields
class Meta:
model = Event
# anything else
extra_kwargs = {
'url': {'view_name': 'api:event-detail'}
}
</code></pre>
<p>这是包含<code>url</code>字段的<code>HyperlinkedModelSerializer</code>的示例。</p>
<p>任何像<code>HyperlinkedIdentityField</code>或<code>HyperlinkedRelatedField</code>这样以<code>view_name</code>为参数的超链接字段,都应该在声明中或通过<code>extra_kwargs</code>传递包含命名空间的正确视图名称。<br/>
对于假定的<code>CommentSerializer</code>(对应于<code>CommentViewSet</code>),它可能看起来像:</p>
<pre><code>class EventSerializer(serializers.HyperlinkedModelSerializer):
comments = serializers.HyperlinkedRelatedField(
many=True,
read_only=True,
view_name='api:comment-detail'
)
</code></pre>