Получение ответа от конечной точки отдыха django (панель поиска) - PullRequest
0 голосов
/ 23 марта 2019

Я новичок в django и мне нужно создать панель поиска в моем проекте django-реагировать. Необходимо взять данные из ввода, отправить их в django и, в ответ, получить новый набор запросов. Я использую Axios и Django-остальные рамки. Из поля ввода в компоненте «Поиск» React я собираюсь отправить данные через такие аксиозы, как:

    getQuery = () => {
    axios.get(`http://localhost:8000/api/SearchPost?q=${this.state.query}`)
    .then(res => {
        this.setState({
            data: res.data
        });

ввод в React:

    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>

мой view.py в Django:

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()

в urls.py:

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

но в ответ я ничего не получаю. Я спрашиваю себя: 1) Я отправляю запрос axios в нужную конечную точку? 2) Должен ли я что-то возвращать в своем классе view.py "SearchPost"?

Любые советы приветствуются, спасибо.

1 Ответ

0 голосов
/ 23 марта 2019

Измените свой 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, поскольку мы только перечисляем в конечной точке поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...