Использование тега <select> в шаблоне django для передачи данных в представление
Я новичок в Django и изучаю формы, шаблоны и представления, создавая простое веб-приложение.
В настоящее время у меня есть представление, которое генерирует данные, как показано ниже, и передает их в шаблон, используя контекстный словарь. Эти данные принимаются шаблоном и согласовываются с тегом <select>
views.py
my_dictionary = {0: {'title': 'Beyond the Soul', 'id': '2Uy66My5oKcBEIW7DvVk3V'},
1: {'title': 'The Groove Cartel Selection', 'id': '1pHtICGI68RmWEKnnP5wGr'},
2: {'title':
'STMPD RCRDS TOP 50', 'id': '1OIzwJTbrOeZTHvUXf5yMg'},
3: {'title': 'House Party by Axwell', 'id': '1tl4L77FJju5zp9bJC83u8'}}
return render(request, 'show_playlist.html', {"my_dictionary": my_dictionary})
шаблон
<select class="form-select" aria-label="Default select example">
<option selected>Choose the element</option>
{% for key, value in my_dictionary.items %}
<option value="{{value.id}}">{{value.title}}</option>
{% endfor %}
</select>
Очевидно, что форма select ничего не делает. Мне интересно, как лучше всего после выбора элемента перенаправить на новый шаблон/вид, передавая фактический выбор (так {{value.id}}
и {{value.title}}
).
Нужно ли мне использовать форму Django или я могу использовать какое-то перенаправление на select, например <a href="{% url 'redirect_url' %}">
?
Следуйте способу Django для управления этим с помощью списка кортежей, где первый элемент - это id, а второй - текст
так будет вид
my_dictionary = [('2Uy66My5oKcBEIW7DvVk3V','Beyond the Soul'),
('1pHtICGI68RmWEKnnP5wGr','The Groove Cartel Selection')
.....
]
return render(request, 'show_playlist.html', {"my_dictionary": my_dictionary})
тогда шаблон должен быть
<select class="form-select" aria-label="Default select example">
<option selected>Choose the element</option>
{% for item in my_dictionary %}
<option value="{{item.0}}">{{item.1}}</option>
{% endfor %}
</select>
Вы можете сделать это, просто выводя опции single peace os из кода, используя представление, просто вызывая ajax. здесь есть пример в simpleisbetterthancomplex, перейдите по ссылке: