Django模板unicode字符串比较

时间:2013-12-17 12:34:37

标签: python django string templates comparison

我已经被困在这里好几个小时了,我希望有人可以帮助我。 我想在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

提前致谢。

1 个答案:

答案 0 :(得分:1)

您似乎没有将字符串与字符串进行比较。您正在将字符串与Interface对象进行比较。也许你的意思是{% ifequal interface app_interface.title %}