Передача данных из python в html представление в django фреймворке - PullRequest
1 голос
/ 15 февраля 2020

У меня есть приложение, где пользователи могут вводить новости, которые они слышали. Введенные «заголовок новости», «новости» и «время» хранятся в базе данных «sesesearch No SQL ». Введенные новости сначала анализируются с помощью методов НЛП для обнаружения и удаления неэтичных слов и снова сохраняются в базе данных эластичного поиска. После этого я хочу показать их на веб-странице по порядку. Я выполнил задачу обработки NLP, но все же не могу отобразить все новости на веб-странице. для этого я использую фреймворк Django.

, что я пытался сделать, это извлечь новости из эластичного поиска, используя для l oop и сохранить каждый новостной элемент = [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 Framework. Кто-нибудь, пожалуйста, предложите способ их отображения на веб-странице шаблона.

1 Ответ

0 голосов
/ 15 февраля 2020

проблема в том, что вы заменяете свой список вывода на вывод json dump. вы должны использовать какую-то другую переменную, например TempNewsData, как я использовал здесь (это просто ваше значение для -l oop):

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...