我想使用for循环更改值

时间:2015-06-29 16:35:04

标签: python django

大家好,我实际上遇到了代码问题。我的代码是这样的。

{% for activity in activityDoneList %}
    <tr>
       <td><a href="{% url 'activity:update' activity.pk %}">{{ activity.title }}</a> </td>
       <td width="10%">{{ activity.status }}</td>
       <td width="10%">{{mission.name}}</td>
       <td width="10%">{{ activity.time_from }}</td>
       <td width="10%">{{ activity.time_to }}</td>
       <td width="10%">{{ activity.date_exec }}</td>
    </tr>          
    {% endfor %}
例如,

。 activity.status将是整数,例如1,2,3。 我想要的只是输出而不是显示这些数字,它只是通过:

if activity.status==1: 
      activity.status="Done" 
elif activity.status ==2: 
      activity.status="Running" 
else: 
      activity.status =="Not Yet"

请帮我编码。

2 个答案:

答案 0 :(得分:2)

{% for activity in activityDoneList %}
    <tr>
       <td><a href="{% url 'activity:update' activity.pk %}">{{ activity.title }}</a> </td>
       {% if activity.status == 1 %}
         <td width="10%">Done</td>
       {% elif activity.status == 2 %}
         <td width="10%">Running</td>
       {% else %}
         <td width="10%">Done</td>
       {% endif %}
       <td width="10%">{{mission.name}}</td>
       <td width="10%">{{ activity.time_from }}</td>
       <td width="10%">{{ activity.time_to }}</td>
       <td width="10%">{{ activity.date_exec }}</td>
    </tr>
{% endfor %}

这将完成你想要的东西,但它相当草率。最好在你的服务器上完成这个。这并不是Jinja的目的。

您也可以使用Javascript来更改值,但如果您的用户已禁用JS,则可能会中断。

答案 1 :(得分:0)

您可以借助模板标记执行此操作。

<强> activity_tags.py

from django import template    

register = template.Library()

@register.simple_tag()
def get_activity_status_value(status):
    if status==1:
        value="Done"
    elif status ==2:
        value="Running"
    else:
        value ="Not Yet"
    return value

get_activity_status_value模板标记将活动状态作为参数,并根据状态值返回适当的值。

然后在您的模板中,您可以直接使用此模板标记并将其传递activity.status,并显示相应的值。

{% load activity_tags %}

{% for activity in activityDoneList %}
    <tr>
       <td><a href="{% url 'activity:update' activity.pk %}">{{ activity.title }}</a> </td>
       <td width="10%">{% get_activity_status_value activity.status %}</td>
       <td width="10%">{{mission.name}}</td>
       <td width="10%">{{ activity.time_from }}</td>
       <td width="10%">{{ activity.time_to }}</td>
       <td width="10%">{{ activity.date_exec }}</td>
    </tr>          
{% endfor %}