Получение выбранного значения из выпадающего меню для сохранения при обновлении страницы
Я пытаюсь найти способ в Django сохранить выбранное значение в выпадающем меню после обновления страницы. Вот текущий код, который у меня есть. Каждый раз, когда я делаю выбор, страница обновляется, показывая правильные данные, связанные с выбором, но по умолчанию используется имя верхнего выбора в выпадающем меню. Спасибо за помощь
<html>
<form method="GET" action=".">
<select name="option-menu" id="option-menu">
<option value="" disabled selected>Choose a Name</option>
{% for d in database %}
<option value="{{d.name}}">{{d.name}}</option>
{% endfor %}
</select>
<button type="submit" class="btn-filter">Filter</button>
</form>
</html>
--views.py--
option_menu = request.GET.get("option-menu")
qs = Database.objects.filter(database_id=id)
if option_menu != '' and option_menu is not None:
qs = qs.filter(name__icontains=option_menu)
return render(request,
template_name='main/database.html',
context={"queryset": qs
})
Вы можете создать функцию в вашем шаблоне, которая активируется периодически, или при щелчке по определенному элементу, которая отправляет выбор в представление, которое сохраняет его в кэш-файл.
Функция для проверки выбора:
<script>
function saveSelection() {
var selection
selection = $('#option-menu').val()
dict = {}
dict[selection] = selection
$.ajax({
url: '//' + '' + '/' + '' + "/",
type: 'POST',
headers: {'X-CSRFtoken': '{{ csrf_token }}'},
data: dict,
dataType: 'json'
})
}
</script>
Здесь вам нужно ввести свой собственный url, я не смог получить его из вашего кода выше
В вашем представлении у вас есть оператор if для обработки POST-запросов для сохранения выбора, и вы передаете выбор в ваш контекст с помощью блока try
try:
savedInfo = {}
csv_reader=csv.DictReader(saveFile)
for row in csv_reader:
if row['Selection'] == "Your selection text index 0":
selection = 0
elif row['Selection'] == "Your selection text index 1":
selection = 1
savedInfor[row['Selection']] == row['Selection']
context['saveInfo'] = savedInfo
except:
pass
if request.method == "POST":
data = request.POST
#save data
Затем, при загрузке страницы, нужна функция для изменения выбора со значения по умолчанию на сохраненное
{% for info, value in saveInfo.items %}
<script>
$('document').ready(function(){
$('#option-menu').prop('selectedIndex', '{{value.1}}'
</script>
Это, вероятно, не идеальный метод, но он может подтолкнуть вас в правильном направлении