这是视图:
@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 方法,则会显示创建实例错误。我尝试了我所知道的一切。
答案 0 :(得分:1)
所以我遇到了同样的问题试试这个 - 我假设你有多个 urls 。将您的创建网址移至获取网址上方。