#django #post #django-class-based-views
Вопрос:
Я пытаюсь создать кнопку поиска для своей базы данных. Но мой self.request.POST.get («поиск») не возвращает ничего
форма:
<form class="d-flex" action="{% url 'asset_app_search' %}">{% csrf_token %}
<input class="form-control me-2" type="search" placeholder="Søg" aria-label="Search" name="searched">
<button class="btn btn-outline-secondary" type="submit">Søg</button> -
</form>
мой views.py
class SearchView(generic.TemplateView):
template_name = "asset_app/search.html"
def post(self):
searched = self.request.POST.get('searched')
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
searched = self.post()
context['searched'] = searched
context_entry_today = datetime.date.today()
context_entry_overdue = datetime.date.today() - datetime.timedelta(days=90)
context_entry_inspection_time = datetime.date.today() - datetime.timedelta(days=76)
context['assets'] = models.Asset.objects.order_by('name')
context['rooms'] = models.Room.objects.order_by('last_inspected', 'location', 'name')
context['bundelReservations'] = models.Bundle_reservation.objects.order_by('return_date')
context['loan_assets'] = models.Loan_asset.objects.order_by('return_date')
context['to_dos'] = to_do_list_app.models.Jobs.objects.all()
context['today'] = context_entry_today
context['overdue'] = context_entry_overdue
context['inspection_time'] = context_entry_inspection_time
return context
и что публикуется
[11/Jun/2021 22:55:23] "GET /asset/search/?csrfmiddlewaretoken=fqb8jppygSbZ10ET8AXw6dd5B77z5OYudNJU0uyjp8jFNYDG57nkNvrcx5lHFsPoamp;searched=sdfdsff HTTP/1.1" 200 10418
Ответ №1:
Вы должны разрешить форме сделать запрос на публикацию, с:
<form method="post" class="d-flex" action="{% url 'asset_app_search' %}">{% csrf_token %}
…
</form>
Таким образом, вы указываете method="post"
в <form>
теге.
По вашему мнению, ваш post
метод в конечном итоге должен будет вернуть HttpResponse
объект:
class SearchView(generic.TemplateView):
template_name = "asset_app/search.html"
def post(self):
searched = self.request.POST.get('searched')
# …
return HttpResponse('some message')