不允许发布方法 drf

时间:2021-06-30 18:58:46

标签: reactjs django django-rest-framework axios

这是视图:

@api_view(['POST'])
@permission_classes([IsAdminUser])
def createProduct(request):
    user = request.user
    product = Product.objects.create(
        user=user,
        name='Sample Name',
        price=0,
        brand='Sample Brand',
        countInStock=0,
        category='Sample category',
        description='',
    )
    product.save()
    serializer = ProductSerializer(product, many=False)
    Response(serializer.data)

这里是 urls.py


urlpatterns = [

    path('api/products/create/', product_views.createProduct, name='create-product'),


]

这是前端操作

export const createProduct = () => async (dispatch, getState) => {
  try {
    dispatch({ type: PRODUCT_CREATE_REQUEST });

    const {
      userLogin: { userInfo },
    } = getState();

    const config = {
      headers: {
        "Content-type": "application/json",
        Authorization: `Bearer ${userInfo.token}`,
      },
    };

    const { data } = await axios.post('/api/products/create/',{}, config);

    dispatch({
      type: PRODUCT_CREATE_SUCCESS,
      payload: data,
    });
  } catch (error) {
    dispatch({
      type: PRODUCT_CREATE_FAIL,
      payload:
        error.response && error.response.data.detail
          ? error.response.data.detail
          : error.message,
    });
  }
};

它显示“详细信息”:“不允许方法“POST”。” .对我来说似乎一切都很好。等待听取您的意见。

如果我使用 get 方法,则会显示创建实例错误。我尝试了我所知道的一切。

1 个答案:

答案 0 :(得分:1)

所以我遇到了同样的问题试试这个 - 我假设你有多个 urls 。将您的创建网址移至获取网址上方。