来自view.py的Python方法没有调用django模板

时间:2017-09-21 15:03:40

标签: html django python-2.7

我试图在django模板上调用python视图方法res(),但它没有调用。

这是我的观点

class make_incrementor(object):
       def __init__(self, start):
          self.count=start
       def __call__(self, jump=1):
          self.count += jump
          return self.count

       @property
       def res(self):
          self.count =0
          return self.count
def EditSchemeDefinition(request, scheme_id):

    iterator_subtopic = make_incrementor(0)
    scheme_recs = scheme.objects.get(id=scheme_id)
    view_val = {
        'iterator_subtopic': iterator_subtopic,
        "scheme_recs": scheme_recs,
    }
    return render(request, "edit.html", view_val)

我正在尝试递增计数,然后在一个级别之后将其重置为0但是它的重置方法没有从Django模板调用。

这是我的edit.html页面

<td id="subTopic" class="subTopic">
    {% for strand in  scheme_recs.stand_ids.all %}
        {{ iterator_subtopic.res }}
        {% for sub_strand in  strand.sub_strand_ids.all %}
            {% for topic in  sub_strand.topic_ids.all %}
                {% for subtopic in  topic.sub_topic_ids.all %}
                    <input id="subTopic{{ iterator_subtopic }}" class="len"
                           value="{{ subtopic.name }}">
                    <br>
                {% endfor %}
            {% endfor %}
        {% endfor %}
    {% endfor %}
</td>

我的{{iterator_subtopic.res}}未获得调用,并且iterator_subtopic的值未再次设置为0。函数及其调用在终端上正常工作,但不能在django模板中呈现。

请纠正我在哪里做错了。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

由于您的make_incrementor课程采用__call__方法,我相信{{ iterator_subtopic.res }}将首先调用iterator_subtopic(),这将返回count整数。然后,它将尝试访问res整数的count属性(不存在),因此它将输出空字符串''

答案 1 :(得分:0)

我只是修改我的make_incrementor类方法,如: -

class make_incrementor(object):
count = 0

def __init__(self, start):
    self.count = start

def inc(self, jump=1):
    self.count += jump
    return self.count

def res(self):
    self.count = 0
    return self.count

def EditSchemeDefinition(request, scheme_id):

iterator_subtopic = make_incrementor(0)
scheme_recs = scheme.objects.get(id=scheme_id)
view_val = {
    'iterator_subtopic': iterator_subtopic,
    "scheme_recs": scheme_recs,
}
return render(request, "edit.html", view_val)

后来在我的django模板中,我调用了它的方法: -

<td id="subTopic" class="subTopic">
<p hidden value="{{ iterator_subtopic.res }}"></p>
{% for strand in  scheme_recs.stand_ids.all %}
    {{ iterator_subtopic.res }}
    {% for sub_strand in  strand.sub_strand_ids.all %}
        {% for topic in  sub_strand.topic_ids.all %}
            {% for subtopic in  topic.sub_topic_ids.all %}
                <input id="subTopic{{ iterator_subtopic.inc  }}" class="len"
                       value="{{ subtopic.name }}">
                <br>
            {% endfor %}
        {% endfor %}
    {% endfor %}
{% endfor %}

完成了。现在我得到了我预期的输出。