首页 > 解决方案 > 视图 admission.views.UpdateEducation 没有返回 HttpResponse 对象。它返回 None 而不是

问题描述

这有什么问题......

视图.Py

    def UpdateEducation(request, id=None):
        context = {}
        user_obj = request.user
        if not user_obj.is_authenticated:
            return redirect('login')
    
        user_id = Applicant.objects.filter(app_id = user_obj.app_id).first()
        applicant = ProfileInfo.objects.filter(user=user_id).first()
        if request.POST:
            form = EducationForm(request.POST, instance=applicant)
            if form.is_valid():
                obj = form.save(commit=False)
                obj.applicant_info = applicant
                obj.save()
                return redirect('profile')
            else:
                context['education_form'] = form
        else:
            try:
                user_info = ApplicantEducation.objects.filter(applicant_info = applicant).get()
                form = EducationForm(
                    initial={
                        'institute_name': user_info.institute_name,
                        'marks_percentage' : user_info.marks_percentage,
                        'affilation_with' : user_info .affilation_with,
                        'date_completion':user_info.date_completion,
                        'degree_details' : user_info.degree_details,
                    }
                )
                context['education_form']= form
            except:
                form = EducationForm()
                context['education_form']= form
            return render(request, 'admission/signup.html', context)

我有一个名为ApplyEducation的模型,我正在使用EducationForm。上面列出的此视图功能旨在存储教育详细信息,但出现错误。这里缺少什么,请看一下....

标签: python-3.xdjangodjango-modelsdjango-viewsdjango-forms

解决方案


Django 视图应该返回一个 HTTPResponse 对象的实例。else目前,如果表单无效(第 17 行的块),您的视图不会返回任何内容。我认为您需要像这样取消缩进您的退货声明:

def UpdateEducation(request, id=None):
    # ...
    if request.POST:
        form = EducationForm(request.POST, instance=applicant)
        if form.is_valid():
            obj = form.save(commit=False)
            obj.applicant_info = applicant
            obj.save()
            return redirect('profile')
        else:
            context['education_form'] = form
    else:
        try:
            # ...
        except:
            form = EducationForm()
            context['education_form']= form
    return render(request, 'admission/signup.html', context)  # <- unindented

推荐阅读