Как сохранить раскрывающееся состояние после выполнения запроса POST в django - PullRequest
0 голосов
/ 05 августа 2020

У меня есть страница с тремя раскрывающимися списками 1. Выберите тип вопроса , 2. Выберите Отметки , 3. Доступные теги , которые являются частью QuestionFilterForm . И затем у меня есть другая форма под названием QuestionPaperForm на той же странице внутри <form>. Когда я выбираю тип вопроса, список вопросов отображается на той же странице после запроса на публикацию. И затем я могу выбрать один или несколько из списка новых вопросов, который представляет собой еще один запрос POST (чтобы добавить эти вопросы в другой список). После второго запроса POST , когда я пытаюсь обновить sh страницу, chrome показывает изменение повторной отправки формы. В этом случае я подумал о перенаправлении после POST , но затем с перенаправлением я не могу сохранить параметры, выбранные в раскрывающемся списке. Приходится каждый раз выбирать варианты и просматривать список вопросов. Я не могу придумать хорошего logi c, где я мог бы справиться с проблемой перенаправления.

Мое мнение следующее

def design_questionpaper(request, course_id, quiz_id, questionpaper_id=None):
    context = {}
    user = request.user

    if quiz_id:
        quiz = get_object_or_404(Quiz, pk=quiz_id)

    if questionpaper_id is None:
        question_paper = QuestionPaper.objects.get_or_create(
            quiz_id=quiz_id
        )[0]
    else:
        question_paper = get_object_or_404(
            QuestionPaper, id=questionpaper_id, quiz_id=quiz_id
        )
    questions, state = None, None
    marks = request.POST.get('marks', None)
    state = request.POST.get('is_active', None)
    question_type = request.POST.get('question_type', None)
    if request.method == "POST":
        filter_form = QuestionFilterForm(request.POST, user=user)

        if question_type:
            questions = _get_questions(user, question_type, marks)

        if questions:
            questions = _remove_already_present(questionpaper_id, questions)


        if 'add-fixed' in request.POST:
            return redirect(
                'yaksh:designquestionpaper',
                course_id=course_id,
                quiz_id=quiz_id,
                questionpaper_id=questionpaper_id
            )
        # question_paper.update_total_marks()
        # question_paper.save()

        # context['qpaper'] = question_paper
        # context['questions'] = questions
    else:
        filter_form = QuestionFilterForm(user=user)

    fixed_questions = question_paper.get_ordered_questions()
    
    context['qpaper'] = question_paper
    context['questions'] = questions
    context['fixed_questions'] = fixed_questions
    context['filter_form'] = filter_form
    context['course_id'] = course_id
    context['state'] = state
    return render(request, 'yaksh/design_questionpaper.html', context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...