【发布时间】:2020-01-27 08:20:25
【问题描述】:
我目前正在 Django (2.2.5) 和 djangorestframework (3.10.3) 中做一个小项目。我在将视图连接到路由器时遇到问题。我真的很感激能有第二双眼睛帮助我找出问题所在
对于网址我尝试了以下两种:
router = routers.DefaultRouter()
router.register(r'<chatroom>', views.ChatRoomViewSet)
router.register(r'<str:chatroom>', views.ChatRoomViewSet)
urlpatterns = [
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls',namespace='rest_framework')),
path('admin/', admin.site.urls),
]
然后将路由器添加到 urlpatterns。
视图集是:
class ChatRoomViewSet(viewsets.ModelViewSet):
queryset = ChatRoom.objects.all().order_by('name')
serializer_class = ChatRoomSerializer
lookup_field = 'name'
def get_viewset(self, request, name=None):
name = self.kwargs.get('name', None)
queryset = ChatRoom.objects.filter(name=name)
return queryset
序列化器是
class ChatRoomSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = ChatRoom
fields = ['url', 'name']
lookup_field = 'name'
型号是:
class ChatRoom(models.Model):
name = models.CharField(max_length=255, default="")
def __str__(self):
return self.name
有什么我明显错过的吗?
【问题讨论】:
-
你目前的结果是什么?你的期望是什么?
-
我当前运行 curl 的结果是 curl -H 'Accept: application/json; indent=4' -u user:password 127.0.0.1:8000/first-room Not Found: /first-room [27/Sep/2019 04:21:40] "GET /first-room HTTP/1.1" 404 5038 我保存了几个房间,包括一个以 first-room 为名,我正在将那个房间的详细信息以 json 形式返回
-
我没有在您的问题上看到您的 urls.py 文件,只是查看路由器,这样可能没有足够的信息让我或其他人回答您的问题。这可能是因为您定义了路由器但未将其添加到您的 urlpattern 中,因此找不到 url
127.0.0.1:8000/first-room -
如果您在第一个答案下看到我的 cmets,您将看到设置的 url
-
我更新了 urls 代码片段以包含 urlpatterns
标签: django url django-rest-framework router django-urls