为什么我的观点在django rest框架中找不到?

时间:2016-08-03 08:54:34

标签: python django django-rest-framework

我正在研究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/ 我做错了什么?

1 个答案:

答案 0 :(得分:3)

您的网址路径似乎有问题。不需要为创建端点进行数字捕获,因为它通常用于引用现有对象。尝试将路径更改为url(r'^create/$', create_site_record)并将POST请求发送到http://localhost:8000/api/create/

相关问题