我正在研究mezzanine rest api并添加更多视图以便轻松工作。我编写了一个视图并制作了它的序列化程序,但是当我试图从邮递员中搜索时,我收到的错误是找不到404
Views.py
@csrf_exempt
@api_view(['POST'])
def create_site_record(request):
serializer = SiteModelSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
serializers.py
class SiteModelSerializer(serializers.Serializer):
title = serializers.CharField(required=True, max_length=100)
tagline = serializers.CharField(required=True, max_length=100)
domain = serializers.CharField(required=True, max_length=100)
def create(self, validated_data):
return Site.objects.create(**validated_data)
urls.py
router = routers.DefaultRouter(trailing_slash=False)
router.register(r'users', UserViewSet)
router.register(r'pages', PageViewSet)
router.register(r'posts', PostViewSet)
router.register(r'categories', CategoryViewSet)
# router.register(r'create_site', create_site_record, 'sitess')
router.register(r'site', SiteViewSet, SiteViewSet.as_view({'get': 'retrieve'}))
urlpatterns = [
url(r'^create/(?P<pk>[0-9]+)$', create_site_record), # I have tried registering this view in router also but no luck
url(r'^', include(router.urls)),
url(r'^docs/', include('rest_framework_swagger.urls')),
url(r'^oauth2/', include('oauth2_provider.urls', namespace='oauth2_provider')),
url(r'^auth/', include('rest_framework.urls', namespace='rest_framework')),
]
我正试图点击此端点:http://localhost:8000/api/create_site/
有效负载:{
"title": "Test",
"tagling": "sdhjshjd",
"domain": "test:8000"
}
获取错误:Not Found: /api/create_site/
我做错了什么?
答案 0 :(得分:3)
您的网址路径似乎有问题。不需要为创建端点进行数字捕获,因为它通常用于引用现有对象。尝试将路径更改为url(r'^create/$', create_site_record)
并将POST请求发送到http://localhost:8000/api/create/
。