python - 如何在 django 中执行 POST 请求后保留下拉列表的状态
问题描述
我有一个包含三个下拉列表的页面1. 选择问题类型,2. 选择标记,3. 可用标签,它们是QuestionFilterForm的一部分。然后我在<form>
. 当我选择问题类型时,发布请求后的同一页面上会显示问题列表。然后我可以从新问题列表中选择一个或多个,这是另一个POST请求(将这些问题添加到另一个列表中)。当我尝试刷新页面时,在第二个POST请求之后,chrome 显示表单重新提交的更改。在这种情况下,我想在POST之后进行重定向,但随后使用redirect,我无法保留下拉列表中选择的选项。我每次都必须选择选项并查看问题列表。我想不出一个可以处理重定向问题的好逻辑。
我的看法如下
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)
解决方案
推荐阅读
- reactjs - 状态未更新 redux
- go - 为什么这段 Golang 代码会产生死锁?
- amazon-web-services - 如何通过 Terraform 将 CodePipeline 与 GitHub Enterprise 一起使用?
- amazon-web-services - 创建预算操作以关闭 Lambda
- python - 如何在 Python 中将对象的对象作为 JSON 访问?
- angular - 如何在 Angular 12 项目上从引导程序 4.6.0 正确升级到 5.1
- javascript - 提交表单时,我需要将 iframe 重定向到不同的页面
- python - 从事件日志中删除周末 - Pandas
- active-directory - 在 Microsoft Active Directory 中搜索 API 以执行操作
- google-workspace - 考勤跟踪放大或满足基本版本