2011-06-22 48 views
0

我做了這個應用程序,應該給一個XML文檔5項。我的觀點發送詞典「rsscontent」這五個項目文件rss.xml:XML和Django問題(unicode相關?)

#views.py 
return render_to_response("rss.xml", {"rsscontent":rsscontent}) 

然後rss.xml文件看起來像這樣:

#rss.xml 
<?xml version="1.0" encoding="UTF-8"?> 
<rss version="0.92"> 
<channel> 
{% for key, value in rsscontent.items %}<item> 
     <title>{{value|safe}}</title> 
     <description>{{value|safe}}</description> 
     <link>{{key|safe}}</link> 
    </item>    
{% endfor %} 
</channel> 
</rss> 

它產生的輸出,但是頁面很怪異。輸出有[U '']在這樣的:

<title>[u'Apple iPod touch 8 GB (4th Generation) NEWEST MODEL']</title> 
<description>[u'Apple iPod touch 8 GB (4th Generation) NEWEST MODEL']</description> 

如何刪除這個?並確保它是正常的文本?

+0

https://docs.djangoproject.com/en/1.3/ref/contrib/syndication/ – diegueus9

回答

2

請勿使用|safe過濾器。此外,它看起來像你的對象值是列表,所以你需要獲得這些元素的第一個元素,而不僅僅是自己打印項目。

您希望修改輸入rsscontent變量是這樣的:

{'item1':'itemtext', 
'item2':'item2text', 
    etc. 
} 

,而不是當前的,可能有:

{'item1':['itemtext',], 
'item2':['item2text',], 
etc. 
} 

如果你不能做到這一點,你需要修改您的模板值輸出如下所示:

<title>{{ value.0 }}</title> 

這會得到t他是列表中的第一項,而不是打印列表本身。

+0

謝謝Paul!我不能失去|安全,因爲我會遇到另一個問題,但是,value.0方法對我有用。我無法弄清楚爲什麼這是一個listobject,所以我使用了這種方法,再次感謝! – Javaaaa

+0

很高興幫助!對'safe'非常小心,這是讓你的網站不安全的一個好方法。 –