如何将多参数传递给Django URL以及如何将其反向

我正在尝试制作测验应用程序,我想让用户选择主题,主题和问题数量(生成测验)。输入下一个视图后应该是测试/测验。我无法将多个参数/值传递给Django URL。 (例如subject / topic / 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,'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,'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})

我的观点正在努力进行主题选择,主题过滤和问题过滤。当我提交表单时,下一个网址不起作用。我已经厌倦了{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'),

jsyuanleil 回答:如何将多参数传递给Django URL以及如何将其反向

在我朋友的帮助下,我解决了问题。我将“ mcq_no”作为字符串传递 将其转换为整数valye后,我的问题已解决。 if int(mcq_no) >= 10 and int(mcq_no) <150:

我的网址是int:mcq_no

path('generate_quiz',views.generate_quiz,name='generate_quiz'),path('test/<subject>/<topic>/<int:mcq_no>',views.test,name='test'),
本文链接:https://www.f2er.com/2816795.html

大家都在问