【问题标题】:Passing data from python to html view in django framework在django框架中将数据从python传递到html视图
【发布时间】: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


    【解决方案1】:

    问题是您将输出列表替换为 json 转储输出。你应该使用像我在这里使用的TempNewsData 之类的其他变量(这只是你的for循环):

    TempNewsData = pyData2['_source']
    
    pyNewsData1 = json.dumps(TempNewsData)
    pyNewsData2 = json.loads(pyNewsData1)
    
    id = pyData2['_id']
    
    headline = pyNewsData2['newsHeadline']
    
    newsText = pyNewsData2['newsText']
    
    date = pyNewsData2['date']
    
    
    
    list = [id, headline, newsText, date]
    
    newsData.append(list)
    

    【讨论】:

    • 谢谢。我没注意到。现在错误消失了
    猜你喜欢
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2020-03-17
    • 2020-03-19
    • 2019-02-16
    • 1970-01-01
    相关资源
    最近更新 更多