我已经被困在这里好几个小时了,我希望有人可以帮助我。 我想在Django模板中比较字符串。 我的观点是给模板提供两个字符串列表:
latest_app_list = App.objects.all().order_by('name')[:5]
context = {'latest_app_list': latest_app_list}
if not request.body == "":
xml = ET.fromstring(request.body)
interfaces = []
for x in xml.getchildren():
interfaces.append(unicode(x.text, 'utf-8'))
context = {'latest_app_list': latest_app_list, 'xml': interfaces}
if("format" in request.GET.iterkeys() and request.GET['format'] == "xml"):
return render(request, 'appstore/appstore.xml', context, content_type="application/xml")
现在,在appstore.xml的tempate中,应该比较列表。
{% if latest_app_list %}
{% for app in latest_app_list %}
{% if xml %}
{% for interface in xml %}
{% for app_interface in app.interfaces.all %}
{% ifequal interface app_interface %}
<app>
<uri>{{app.ip}}</uri>
<id>{{ app.id }}</id>
<name>{{ app.name }}</name>
</app>
{% endifequal %}
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
因此模板应该只显示s,它在给定的Interface-List中有一个接口。 Ich已经看过这些类型了。两者都是unicode字符串。 作为参考,这是我的models.py:
from django.db import models
class Interface(models.Model):
title = models.CharField(max_length=150)
def __unicode__(self):
return self.title
class App(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
description = models.TextField(max_length=3000)
ip = models.CharField(max_length=150)
interfaces = models.ManyToManyField(Interface)
file = models.FileField(upload_to='documents/%Y/%m/%d')
def __unicode__(self):
return self.name
提前致谢。
答案 0 :(得分:1)
您似乎没有将字符串与字符串进行比较。您正在将字符串与Interface
对象进行比较。也许你的意思是{% ifequal interface app_interface.title %}
?