windows 10中,我使用react-router-dom 5.2.0react-redux 7.2.5react 17.0.2axios 0.21.4WebStorm 2023.1.3 IDEPyCharm Community Edition 2023.2djangorestframework==3.14.0Django==4.2.4djangorestframework-simplejwt==5.3.0.

question:其实我不知道怎么把这个从GenericAPIView继承的query parameter传到Django's base class view that,这个错误怎么解决?

BACKEND:

考虑-product_views.py:

class SearchProduct(GenericAPIView):

    serializer_class = ProductSerializer
    pagination_class = CustomPagination1

    def get_queryset(self, *args, **kwargs):
        # the lead id
        query = self.request.GET.get("query")

        #  this filter base on the lead id  provided
        lookup = Q(name__icontains=query) | Q(description__icontains=query) | Q(producttag__title__icontains=query)
        products = Product.objects.filter(lookup).distinct()

        return products
    def get(self, request):


        page = self.paginate_queryset(self.get_queryset())
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            result = self.get_paginated_response(serializer.data)
            data = result.data  # pagination data

        else:
            serializer = self.get_serializer(queryset, many=True)
            data = serializer.data
        payload = {
            'return_code': '0000',
            'return_message': 'Success',
            'data': data
        }
        return Response(data , status=status.HTTP_200_OK)

考虑- product_urls.py:

 path('search_product/<str:query>/' , views.SearchProduct.as_view() , name="search_product"),

FRONTEND:

考虑-ProductAction.py:

export const productsSearchAction = (query , pageNumber) => async (dispatch , getState) => {
    try {
        dispatch({type: PRODUCTS_SEARCH_REQUEST});
        const {data} = await axios.get(`http://127.0.0.1:8000/api/v1/products/search_product/${query}/?page=${pageNumber}`);
        dispatch({type: PRODUCTS_SEARCH_SUCCESS , payload: data});
        localStorage.setItem("productsSearch" , JSON.stringify(data));
    } catch (error) {
        dispatch({ // PRODUCTS SEARCH FAILED
            type: PRODUCTS_SEARCH_FAILED,
            payload: error.response && error.response.data.detail ? error.response.data.detail : error.message,
        });
    }
}

我认为答案很简单,如果你是Django和Django REST框架的专家,请回复我,这样这个错误就可以解决.

my error screen:

enter image description here

推荐答案

您的.get(…)方法将需要接受URL路径参数,在这里您可以更好地只接受所有位置和命名参数:

class SearchProduct(GenericAPIView):
    serializer_class = ProductSerializer
    pagination_class = CustomPagination1

    def get(self, request, *args, **kwargs):
        # …

Note:在Django中,基于类的API视图(CBV)通常有一个…APIView后缀,以避免与模型名称冲突. 因此,您可以考虑将视图类重命名为SearchProductAPIView,而不是SearchProduct.

Reactjs相关问答推荐

更新数据时有关CQR和更新UI的问题

如何使用react-router-dom导航到网页中的其他路由?

ReferenceError:未在Redux组件中定义窗口

为什么安装FLOBIT后,所有的输入FIELD现在都有一个蓝色的轮廓?

生成Reaction Vite应用程序的停靠容器时无法识别环境变量

对搜索引擎优化来说,react 头盔的异步足够了吗?

子路径上未定义useMatches句柄

无法找出状态正在被更改的位置

useEffect不重新渲染

警告:遇到两个子元素拥有同一把 keys .键应该是唯一的,以便组件在更新时保持其身份

如何管理组件列表的复杂状态? (Nextjs/ReactJS)

BrowserRouter改变了URL但没有链接到页面

React 应用程序可以嵌入到 PowerPoint 中吗?

根据其中的值不同地react setState 更新状态

为嵌套路由配置一个不存在的 url 的重定向

NextJS htaccess 设置

如何在 nextjs 中单击按钮时动态导入和渲染组件?

如何从 graphql/apollo 中的缓存中清除多个查询

React Router v6 - 访问嵌套路由和处理手写 url 的正确方法

如何从另一个切片中的不同切片获取状态并对其进行处理?