【问题标题】:django context form not rendered after form invalid表单无效后未呈现 django 上下文表单
【发布时间】:2015-02-01 20:29:04
【问题描述】:

我有一个医生详细信息视图,其中我已将表单作为上下文传递:

class HospitalDoctorDetailView(DetailView):
context = {}
model = HospitalDoctor
template_name = "hospital_doctor_detail.html"
context_object_name = 'doctor'

def get_context_data(self, **kwargs):
    context = super(HospitalDoctorDetailView, self).get_context_data(**kwargs)
    context['appointment_form'] = AppointmentForm1
    return context

我在名为hospital_doctor_detail.html的模板中使用了这个表单:

<form action="/appointment/{{doctor.id}}/{{doctor.hospital.id}}/" method="post">{% csrf_token %}
First Name:<br/>
{{ form.first_name.errors }}
{{ appointment_form.first_name }}<br/>
Middle Nmae:<br/>
{{ form.middle_name.errors }}
{{ appointment_form.middle_name }}<br/>
Last Name:<br/>
{{ form.last_name.errors }}
{{appointment_form.last_name}}<br/>
Age:<br/>
{{ form.age.errors }}
{{ appointment_form.age }}<br/>
Date:<br/>
{{ form.appointment_date.errors }}
{{ appointment_form.appointment_date }}<br/>
<br/>
<input type="submit" value="Take Appointment" style="background-color:#EFEFEF; border:1px solid #000;" />
</form>

我的表单 AppointmentForm1 是一个模型表单。要提交表单,我已经写了一个视图:

def TakeAppointmentView(request, pk, hpk):
doctor = HospitalDoctor.objects.get(pk=pk)
hospital = Hospital.objects.get(pk=hpk)
if request.method == "POST":
    form = AppointmentForm1(request.POST)
    if form.is_valid():
        app = DoctorAppointment()
        app.user = request.user
        app.doctor = doctor
        app.hospital = hospital
        app.first_name = form.cleaned_data['first_name']
        app.middle_name = form.cleaned_data['middle_name']
        app.last_name = form.cleaned_data['last_name']
        app.age = form.cleaned_data['age']
        app.appointment_date = form.cleaned_data['appointment_date']
        app.save()
        messages.success(request, "Thank you for taking appointment")
        return redirect("doctor_detail", pk)
        #return redirect("/home/")
    else:
        return render_to_response("hospital_doctor_detail.html", {"appointment_form":form}, context_instance=RequestContext(request))
else:
    form = AppointmentForm1()
return render_to_response("hospital_doctor_detail.html", {"appointment_form":form}, context_instance=RequestContext(request))

如果表格有效,预约成功,但如果表格无效,我想将其重定向到同一个医生详细信息视图。

这里我收到一个错误,如果表单无效,它会重定向到带有错误消息的医生详细信息视图,但表单不显示? 这里有什么问题??

【问题讨论】:

    标签: python django forms templates view


    【解决方案1】:

    您将以{"application_form": form} 的身份将表单返回到您的模板。

    您的模板对任何名为 form 的变量一无所知。

    而不是使用:

    {{ form.first_name.errors }}
    

    尝试对每个错误消息使用以下内容:

    {{ application_form.first_name.errors }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-26
      • 2023-03-15
      • 2018-07-12
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      相关资源
      最近更新 更多