【发布时间】:2018-08-19 04:08:48
【问题描述】:
我收到来自 REST 服务的响应。此响应是 JSON 对象的数组。使用这个数组,我试图使用 Jinja2 模板框架在 HTML 页面上显示每个 JSON 对象的单个属性。但它在浏览器上显示的是空字符串。
我从服务中得到的 JSON 响应是
{
u'messages':
[
{u'text': u'hello', u'author_id': 1, u'pub_date': 1518506778, u'message_id': 1},
{u'text': u'hell', u'author_id': 2, u'pub_date': 1518420378, u'message_id': 2},
]
}
不确定每个字符串前面的 u 字符是什么。其余服务在 Flask 中开发。
下面是python代码:
r = requests.get('http://127.0.0.1:3000/api/v1.0/messages')
@app.route('/messages')
def public_timeline():
"""Displays the latest messages of all users."""
python_message = json.loads(r.text)
print("******")
print(python_message)
return render_template('messages.html', messages = python_message)
模板代码是:
{% if messages %}
<ul id=”messages”>
{% for message in messages %}
<li>
<div class=”text”>
<a>{{message['text']}}</a>
</div>
</li>
{% endfor %}
</ul>
{% else %}
<p>Messages not available :(</p>
{% endif %}
我认为问题是由于每个字符串之前不必要的 u 字符。如何解决浏览器屏幕出现空白输出的问题?
浏览器中的输出是:
<html><head></head><body><ul id="”messages”">
<li>
<div class="”text”">
<a></a>
</div>
</li> ....
【问题讨论】:
-
u前缀是一个类型指示符,你有Unicode 字符串。这是解码 JSON 数据时的正常现象。 他们不是问题。 -
你能给我们是产生的输出吗?你得到
Messages not available吗?print(python_message)行是否在运行 Flask 的控制台上产生输出? -
鉴于
messages是一个字典,for message in messages循环只会从字典中生成单个'messages'键。您的意思是改用python_message['messages']吗? -
@MartijnPieters:我在浏览器屏幕上得到了空字符串。 HTML页面的sn-p是
- .... 是的,print(python_message) 显示服务器响应,如上所述。
标签: python python-2.7 flask jinja2