python – Django:为什么这个简单的标签不起作用?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django:为什么这个简单的标签不起作用?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2071字,纯文字阅读大概需要3分钟。
内容图文
我使用python 3在我的django 1.7设置中注册了以下简单标记:
# templatetags/getKonten.py
from django import template
from bilanz.models import Konto
register = template.Library()
def getKonten():
'''Description...'''
konten = Konto.objects.all()
return konten
register.simple_tag(getKonten)
当我尝试访问模板中的简单标记时,我只得到这个输出:[,,,].它看起来像是一个空列表.但Konto桌子不是空的!我想迭代查询集中的所有对象.这就是我在模板中调用模板标记的方式:
{% load getKonten %}
{% block content %}
{% getKonten %} <!-- Output: [, , , ] -->
<!-- the for loop below has no output -->
{% for konto in getKonten %}
<h2>{{ konto.konto_title }}</h2>
{% endfor %}
{% endblock %}
以下简单标记工作没有问题:
from django import template
from bilanz.models import Konto
from bilanz.templatetags.kontoSum import kontoSum
register = template.Library()
def totalSum(kontotype):
konten = Konto.objects.filter(konto_type=kontotype).filter(konto_type2='-')
sum = 0
for konto in konten:
sum += kontoSum(konto.id, konto.konto_type)
return sum
register.simple_tag(totalSum)
我真的不明白这是什么问题!
更新:这是models.py:
class Konto(models.Model):
konto_title = models.CharField(max_length=200)
konto_anfangsBestand = models.IntegerField(default=0)
konto_sum = models.IntegerField(default=0)
konto_erfolgswirksam = models.BooleanField(default=False)
konto_types = (
('A', 'Aktiv'),
('P', 'Passiv')
)
konto_types2 = (
('-', 'nicht erfolgswirksam'),
('B', 'Betrieb'),
('F', 'Finanz'),
('N', 'Neutral'),
('S', 'Steuer'),
)
konto_types3 = (
('UV', 'Umlaufverm?gen'),
('AV', 'Anlageverm?gen'),
('kFK', 'kurzfristiges Fremdkapital'),
('lFK', 'langfristiges Fremdkapital'),
('EK', 'Steuer'),
)
konto_type = models.CharField(max_length=1, choices=konto_types)
konto_type2 = models.CharField(max_length=1, choices=konto_types2, default='-')
konto_type3 = models.CharField(max_length=3, choices=konto_types3)
def __str__(self):
return self.konto_title
解决方法:
simple_tag意味着返回一个字符串.你需要使用的是assignment_tag:
@register.assignment_tag
def get_konten():
return Konto.objects.all()
在模板中:
{% get_konten as konten %}
{% for konto in konten %}
...
内容总结
以上是互联网集市为您收集整理的python – Django:为什么这个简单的标签不起作用?全部内容,希望文章能够帮你解决python – Django:为什么这个简单的标签不起作用?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。