【问题标题】:Post method not allowed drf不允许发布方法 drf
【发布时间】:2021-06-30 18:58:46
【问题描述】:

这是视图:

@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 方法,那么它会显示创建实例错误。我尝试了我所知道的一切。

【问题讨论】:

  • 在没有@permission_classes 的情况下进行测试 - 结果相同?
  • 是的,结果是一样的。
  • 方法不允许:/api/products/create/ [01/Jul/2021 12:14:29] "POST /api/products/create/ HTTP/1.1" 405 41

标签: reactjs django django-rest-framework axios


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    相关资源
    最近更新 更多