【发布时间】:2020-04-23 09:40:12
【问题描述】:
我正在尝试制作测验应用程序,我想让用户选择主题和主题以及问题数量(生成测验)。输入后下一个视图应该是测试/测验。我无法将多个参数/值传递给 django url。 (例如主题/主题/no_of_question)
def generate_quiz(request):
if request.method == 'GET':
subjects = Subject.objects.all()
topics = Topic.objects.all()
return render(request, 'mcq/quizetting.html', {'subjects':subjects,'topics':topics})
if request.method == 'POST':
subject_id = request.POST.get("subject", "")
topic_id = request.POST.get("topic", "")
mcq_no = request.POST.get("mcq_no", "")
subjects = Subject.objects.all
if subject_id != '':
if topic_id != '':
if mcq_no >= 10 and mcq_no <150:
return HttpResponseRedirect(reverse('test', kwargs=['subject':subject_id, ]))
else:
return render(request, 'mcq/quizetting.html', {'subjects':subjects,'topics':topics})
else :
topics = Subject.objects.get(id=subject_id).topic_set.all()
else:
topics = Topic.objects.all()
subject_id = str(subject_id)
return render(request, 'mcq/quizetting.html', {'subjects':subjects,'topics':topics, 'current_subject_id':subject_id})
def test(request, subject, topic, mcq_no):
s = Subject.objects.get(id=subject)
t = Topic.objects.get(id=topic)
selected_questions = Question.objects.filter(subject=s, topic=t)[:mcq_no]
return render(request, 'mcq/test.html', {'questions':selected_questions})
我的观点是针对主题选择、主题过滤和问题过滤。当我提交表单时,下一个 url 不起作用。我已经厌倦了 {srt 和 int) 变量来传递 url
path('generate_quiz',views.generate_quiz, name='generate_quiz'),
path('test/<subjects_id>/<topics_id>/<int:mcq_no>',views.test, name='test'),
【问题讨论】:
-
您认为生成的 URL 会是什么样子?你能用 GET 参数做到这一点吗?
-
当我提交选择表格(url /genrate_quiz)然后下一个视图应该是测试/或论文(url 例如主题/主题/100)
-
只需使用 test/?subjects_id=your_subjects_id&topics_id=your_topics_id&mcq_no=your_mcq_no。要获取查询参数,请执行此 request.query_params.get('subjects_id') 等等......
-
Gorkhali Khadka 亲爱的,我遇到了与 url 相关的问题,因为我试图更改视图但失败了
标签: django python-3.x django-views django-urls multivalue