Могу ли я использовать предотвращение по умолчанию в форме, которая использует GET в качестве метода в шаблоне Django HTML?
Я хочу создать раздел о поиске некоторых фильмов в моей базе данных, однако этот раздел находится в нижней части моей страницы. Однако, когда я выполняю поиск и нахожу фильм, который я искал, страница обновляется. Кроме того, я не знаю, является ли "GET" идеальным методом для безопасных разделов, но я читал, что POST необходим только для изменений в базе данных. В данном случае я просто хочу вывести фильм, соответствующий тому, что искали в строке поиска.
Это мой вид, и я получаю поиск вот так, в контексте, чтобы его было легче визуализировать. Это работает нормально.
class MoviesPage(TemplateView):
template_name = "tailwind/movies-page.html"
def get_context_data(self, **kwargs):
context = super(MoviesPage, self).get_context_data(**kwargs)
# Top Movies' section
movies = Movies.objects.filter(
name__in=[
'Oldboy',
'Parasite',
'Lady Vengeance',
]
)
context['movies'] = movies
# Movie search's section
query = self.request.GET.get('q', default='oldboy')
results = Movies/.objects.filter(Q(name__icontains=query))
context['results'] = results
Это моя форма в моем HTML шаблоне:
<form
action=""
method="GET"
id="search-package-form"
>
<input
type="search"
name="q"
placeholder="oldboy"
/>
<div>
<button
type="submit"
>
<span>Search</span>
</button>
</div>
</form>
{% if results %}
<div>
{% for movie in results %}
<ul>
<li>{{ movie.name }}</li>
</ul>
{% endfor %}
</div>
{% else %}
<div>
<h3>We did not found this movie</h3>
</div>
{% endif %}
<script>
document.getElementById('search-package-form').addEventListener('submit', function(e) {
// prevent the default action of the submit event
e.preventDefault();
// submit the form using the submit() method
this.submit();
});
</script>
Однако, моя страница все еще обновляется, когда я отправляю что-то, потому что я получаю что-то вроде:
/movies/?q=oldboy.