Помощь по Django! Форма с методом post не правильно вызывает действие с тегом django url нужна помощь в понимании почему это не работает?
Пытаясь создать простую форму поиска, используя method="POST" и action, ссылающийся на url, который должен вызвать представление для отображения другого шаблона, я столкнулся с тем, что он не работает, все, что он делает, это тег на csrf на мой индексный url и действует так, как будто я использую GET, а не POST, какие-нибудь мысли о причинах?
HTML URL:
http://127.0.0.1:8000/bugtracker/?csrfmiddlewaretoken=jdGcvGb8pioQutLhDOL8y6zbK7DW6XSErTYQ8zHOI8W1fAXf8V6NFoFmzXRIvC3d&searched=
Вид:
@login_required(login_url='login_register')
def search_site(request):
if request.method == "POST":
searched = request.POST['searched']
context = {
'searched': searched
}
return render(request, 'bugs/search_site.html', context)
else:
return render(request, 'bugs/search_site.html')
URL:
path('search_site/', views.search_site, name='search_site'),
Шаблон строки поиска:
<div class="input-group">
<form method="POST" action="{% url 'search_site' %}">
{% csrf_token %}
<input class="form-control" type="search" placeholder="Search for..." aria-label="Search for..." name="searched">
<button class="btn btn-primary" type="submit"><i class="fas fa-search"></i></button>
</form>
</div>
Шаблон результатов поиска:
{% extends 'bugs/base.html' %}
{% block content %}
<div class="container-fluid px-4">
{% if searched %}
<h4 class="mt-4">results for {{ searched }}</h4>
{% endif %}
</div>
{% endblock %}
Я пытался изменить метод, чтобы получить, я пытался изменить мой url и мой вид безрезультатно. и удаление crf просто делает тег url как ? в индекс, кажется, что это не вызывает ничего вообще.
Я могу дать два предложения, первое, чтобы вывести вне условия else, и второе, чтобы увидеть searched
имеет значение или нет, распечатав его.
@login_required(login_url='login_register')
def search_site(request):
if request.method == "POST":
searched = request.POST['searched']
print(f"searched value --> {searched}")
context = {
'searched': searched
}
return render(request, 'bugs/search_site.html', context)
return render(request, 'bugs/search_site.html')
Шаблон результатов поиска:
{% extends 'bugs/base.html' %}
{% block content %}
<div class="container-fluid px-4">
{% if searched %}
<h4 class="mt-4">results for {{ searched }}</h4>
{% else %}
<p>No value has come.</p>
{% endif %}
</div>
{% endblock %}
Я также думаю, что это должен быть другой шаблон в POST
Метод проверьте его, вы предоставили search_site.html
может быть это что-то вроде search_result.html
.