Получение выбранного значения из выпадающего меню для сохранения при обновлении страницы

Я пытаюсь найти способ в 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>

Это, вероятно, не идеальный метод, но он может подтолкнуть вас в правильном направлении

Вернуться на верх