从Django Rest端点获取响应(搜索栏)

时间:2019-03-23 14:52:36

标签: django reactjs django-rest-framework

我是django的新手,需要在django-react项目中创建搜索栏。需要从输入中获取数据,将其发送到django,并作为响应接收新的查询集。我正在使用axios和django-rest框架。从React“搜索”组件的输入字段中,我打算通过axios发送数据,例如:

    handelChange = (e) => {
    this.setState({ query: this.search.value},
        () => {
            this.getQuery()
        })
}

render() {
    return (
        <form>
            <input
                placeholder="Search..."
                name="q"
                ref={input => this.search = input}
                method="get" 
                onChange={this.handelChange}
            />
        </form>

React中的输入:

class SearchPost(generics.ListCreateAPIView):
    serializer_class = ModelSerializer
    def search(request):
        query = request.GET.get("q")  
        if query:
            queryset = Model.objects.filter(
                Q(category_icontains=query)|   
                Q(title_icontains=query)|
                Q(creator_icontains=query)
                ).distinct()

我在Django中的view.py是:

path('api/SearchPost', views.SearchPost.as_view()),

在urls.py中:

{{1}}

但是,作为回应,我什么也没收到。 我要问自己的事情是:  1)我是否将axios请求发送到正确的端点?  2)我应该在view.py“ SearchPost”类中​​返回一些内容吗?

欢迎任何建议,谢谢。

1 个答案:

答案 0 :(得分:0)

如下更改您的API

      class SearchPost(generics.ListAPIView):
          serializer_class = ModelSerializer  //please change name of serializer
          model = serializer_class.Meta.model
          paginate_by = 100
          def get_queryset(self):
              query = self.kwargs.get('q')
              if query:
                  return self.model.objects.filter(
                    Q(category_icontains=query)|   
                    Q(title_icontains=query)|
                    Q(creator_icontains=query)
                    ).distinct()
              return None

我们使用ListAPIView,因为我们仅在搜索端点中列出。