【问题标题】:django print loop value only oncedjango 仅打印一次循环值
【发布时间】:2014-11-27 12:59:51
【问题描述】:

我有一个视图,我可以在其中获取有限制的约会列表..

def HospitalAppointmentView(request, pk, username, hdpk):
todays_appointments = DoctorAppointment.objects.filter(hospital__id=pk, doctor__id=hdpk, appointment_date=today).order_by("-appointment_date")[:5]

return render_to_response('doctor_appointment_list.html', {"todays_appointments": todays_appointments}, context_instance=RequestContext(request))

在我的模板中:

{% for appointment in todays_appointments %}
    <h3>{{appointment.doctor.username}}<h3>
    <tr>
    <td>{{appointment.appointment_date}}</td>
    <td>{{appointment.first_name}} &nbsp;{{appointment.middle_name}} &nbsp; {{appointment.last_name}}</td>
    <td>{{appointment.user}}</td></tr>
    <a href="{% url "all_appointments" appointment.hospital.id appointment.doctor.id%}">
    See All</a>

{% endfor %}

它正确显示了 5 个约会,除了“查看全部”重复了 5 次,我想将医生的用户名作为标题,它也被打印 5 次。

当我点击“查看全部”时,我想重定向到可以看到所有约会的页面。喜欢:

def HospitalAppointmentView(request, pk, username, hdpk):
todays_appointments = DoctorAppointment.objects.filter(hospital__id=pk, doctor__id=hdpk, appointment_date=today).order_by("-appointment_date")

return render_to_response('all_appointment.html', {"todays_appointments": todays_appointments}, context_instance=RequestContext(request))

如果我在 for 循环外写“查看全部”,我将无法访问 hospital.id 和医生.id,而在循环内,我会得到 5 次“查看全部”,{{appointment.doctor.username} 也是如此}。

如何在不打印 5 次的情况下进行重定向,并且 URL 中需要的所有信息和 {{appointment.doctor.username}} 都打印一次?

【问题讨论】:

  • 只需将HospitalAppointmentView中pk和hdpk的值传给模板即可。那么你将拥有循环之外的值。

标签: python django loops templates


【解决方案1】:

您可以使用{{forloop.first}},第一次迭代将是正确的。 喜欢...

{% for appointment in todays_appointments %}

    {% if forloop.first %}
        <h3>{{appointment.doctor.username}}<h3>
    {%endif%}

    ...
{%endfor%}

【讨论】:

    【解决方案2】:
    {{todays_appointments.0.doctor.username}}
    

    和你的正常循环。

    {% for appointment in todays_appointments %}
     ....
    {% endfor %}
    

    但罗汉的回答更明智

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 2017-07-28
      • 2019-11-30
      • 1970-01-01
      相关资源
      最近更新 更多