Как сделать пользовательский поиск с помощью метода post в django

Я новичок в django. Моя проблема в том, что я хочу осуществлять поиск по URL, например http://127.1.8000/shop/search/queryask шаблон Я не хочу использовать запрос со знаком вопроса, например ?q=abcd Может ли кто-нибудь подсказать мне, как это сделать в url, view и файлах шаблона django. Спасибо

Вы можете сделать это через пару довольно произвольных kwargs, хотя я бы сам так не делал (я бы использовал GET и request.GET)

Всего: url

path('mysearch/<int:pk>/<str:foo>/<str:bar>/',
         MySearchPostView.as_view(), name='whatever'),

Вам может понадобиться или не понадобиться pk для указания конкретной сущности, которая будет участвовать в поиске, заданном foo и bar

view: любой CBV, соответствующий вашим целям. Это может быть, например, FormView, который проверяет, что поля пользователя foo и bar имеют смысл в вашем контексте, а затем что-то делает. (Вполне возможно, что в этом случае вам не понадобится pk)

class MySearchPostView(  FormView):

    #usual declarations template_name, form_class, etc. 

    def form_valid( self, form):

       foo = self.kwargs.get( 'foo')
       bar = self.kwargs.get( 'bar')

       # and stuff that was POSTed through the form

       baz = form.cleaned_data.get( 'baz')

       # now process these entities and decide whether they make sense together
       if (  conditions):       # if they are valid together
           return HttpResponseRedirect(
              reverse( 'myapp:some_other_view', kwargs={
                  ...
              }
            ))
        else:
            # add a non-field error
            form.add_error('', f"foo={foo} and bar={bar} are not valid together with baz={baz} )
            return self.form_invalid( form)

Если недействительное состояние указывает на ошибку программирования JS, а не на ошибку пользовательского ввода, вы можете вместо этого return HttpResponseServerError( messsage) (для кода Http-ответа 500)

Шаблон: вы предположительно будете использовать некий JS или что-то подобное для генерации POST на URL с автоматически сгенерированными значениями foo и bar. Отображение формы будет абсолютно стандартным. {{form.as_p}} будет достаточно для целей разработки. JS будет специфичен для конкретного приложения и выходит за рамки этого вопроса, не зная ничего о проблеме, которую нужно решить.

Вернуться на верх