【发布时间】:2020-02-15 14:26:23
【问题描述】:
我有一个应用程序,用户可以在其中输入他们听到的新闻。输入的“新闻标题”、“新闻”和“时间”存储在 elasticsearch NoSQL 数据库中。输入的新闻项目首先使用 NLP 技术进行分析,以检测和删除不道德的词语,然后再次存储在 elasticsearch 数据库中。之后,我想按顺序在网页上显示它们。我完成了处理 NLP 任务,但仍然无法在网页上显示所有新闻项目。为此,我正在使用 Django 框架。
我试图做的是使用 for 循环从 elasticsearch 中提取新闻项,并将每个新闻项=[news headline, news, time] 作为列表集合存储在列表 [[],[],[]] 中,并将它们传递给 HTML 模板。
python 代码:
def news_items(request):
newsData = []
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
for x in range(1, 101):
results = es.get(index='reporter', doc_type='news', id=x)
pyData1 = json.dumps(results)
pyData2 = json.loads(pyData1)
newsData = pyData2['_source']
pyNewsData1 = json.dumps(newsData)
pyNewsData2 = json.loads(pyNewsData1)
id = pyData2['_id']
headline = pyNewsData2['newsHeadline']
newsText = pyNewsData2['newsText']
date = pyNewsData2['date']
list = [id, headline, newsText, date]
newsData.append(list)
template = 'AppOne/news.html'
return render(request, template, {'nd': newsData})
用于访问该数据的模板代码
<ul>
{% for a,b,c,d in nd %}
<li>{{a}}</li>
<li>{{b}}</li>
<li>{{a}}</li>
<li>{{b}}</li>
{% endfor %}
但它给出了一个错误:
AttributeError: 'dict' 对象没有属性 'append'
我尝试了很多方法,但每次都不成功。我是 Django 框架的新手。请有人提出一种在模板网页上显示它们的方法。
【问题讨论】:
标签: python django elasticsearch