Django从前端app发布403

时间:2017-06-01 23:21:08

标签: python django django-rest-framework csrf axios

我无法向我的数据库发送成功的post请求,我不断获得post url 403 (Forbidden)

我认为这是因为我的csrf token因为来自管理员我可以毫无问题地发布帖子请求。

我的设置是:

Api查看:

class ContactFormViewSet(viewsets.ModelViewSet):
    queryset = ContactForm.objects.all()
    serializer_class = ContactFormSerializer

    def post(self): # This returns metrics only for the logged in user
        user_id = self.request.user.id
        return GoogleProperty.objects.filter(user_id=user_id)

串行:

class ContactFormSerializer(serializers.ModelSerializer):
    class Meta:
        fields = (
            'google_email',
            'property_name',
            'url',
            'message',
            'created'
        )
        model = ContactForm

我的设置如下:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES':(
        'rest_framework.authentication.SessionAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_FILTER_BACKENDS': (
        'django_filters.rest_framework.DjangoFilterBackend',
    ),
}

最后我的axios电话看起来像这样:

var url = '/api/v2/messages/'
        let token = document.head.querySelector("[name=_token]").content
        console.log(token)
        axios.post(url,{
          headers: {"X-CSRFToken": token},
          data: {
            google_email:'vm.email',
            property_name:'vm.property',
            url: 'sss',
            message: vm.message,
            xsrfHeaderName: token
          }
        })

我有一个像<meta name="_token" content="{{ csrf_token }}">

这样的元标记

令牌在我的控制台中打印正常,我更喜欢这种方法,因为我没有使用jquery。

我已经关注this回答/问题,但它似乎并不适合我。

为什么我的帖子请求失败?

0 个答案:

没有答案