Соедините HTML-страницу с Elasticsearch, используя колбу Python - PullRequest
0 голосов
/ 17 мая 2019

Я новичок в веб-разработке. Я пытаюсь создать веб-страницу, которая будет отображать индекс из эластичной базы данных поиска. Я использую Python колбу для бэкэнда. Я вижу HTML страницу и Python Console показывает индекс. Но я не могу получить индекс со страницы HTML.

Я не уверен, в чем может быть проблема

Код Python выглядит следующим образом:

from flask import Flask,render_template, request
from elasticsearch import Elasticsearch

app = Flask(__name__)
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])

doc1 = {"food": "Japanese", "spice_level": "moderate"}
doc2 = {"food": "Italian", "spice_level": "mild"}
doc3 = {"food": "Indian", "spice_level": "spicy"}
es.index(index="food", doc_type="spice_level", id=1, body=doc2)
resp = es.get(index="food", doc_type="spice_level", id=1)
print(resp)

@app.route('/')
def home():
    return render_template('index.html')

  app.route('/dashboard', methods=['GET', 'POST'])

if __name__ == '__main__':

 app.run(host='0.0.0.0', port=5000)

HTML-код выглядит следующим образом:

<!DOCTYPE html>
  <BODY bgcolor="cyan">
    <form method="GET" action="/dashboard">
     <center>
      <H1>Database UI </H1> <br>
      search here <input type = "text" name= "index" /> <br>
      <input type = "submit">
     </center>
    </form>
  </BODY>
</html>

Всякий раз, когда я набираю имя индекса и нажимаю на кнопку поиска, страница выдает ошибку как:

Запрошенный URL-адрес не найден на сервере. Если вы ввели URL-адрес вручную, проверьте правильность написания и повторите попытку.

Я не вижу никакой другой ошибки, кроме этой, и действительно сложно отладить с меньшим количеством информации об ошибке.

Ответы [ 2 ]

1 голос
/ 17 мая 2019
  1. почему ваши /dashboard возвращают 404?

    из-за отсутствия функции просмотра ответа.

    app.route('/dashboard', methods=['GET', 'POST']) недопустимо.

  2. Как получить доступ к /dashboard elascticsearch?

    В вашем случае, самый простой способ - это изменить index.html

<!DOCTYPE html>
  <BODY bgcolor="cyan">
    <form method="POST" action="http://localhost:9200/dashboard">
     <center>
      <H1>Database UI </H1> <br>
      search here <input type = "text" name= "index" /> <br>
      <input type = "submit">
     </center>
    </form>
  </BODY>
</html>
0 голосов
/ 17 мая 2019

Вы можете использовать это здесь?для разбора данных из HTML в код Python вам нужно иметь POST внутри @ app.route, например:

@app.route("/", methods=['GET', 'POST'])
def home():

    return render_template('index.html')

, если вы хотите поместить данные в index.html, вы можете использовать это здесь:

somedata = "переменная строка"

render_template ('index.html', somedata = somedata)

внутри index.html do {{somedata}}

<!DOCTYPE html>
  <BODY bgcolor="cyan">
    <form method="POST" action="">
     <center>
      <H1>Database UI </H1> <br>
      <!-- it will show (variable string) -->
      {{ somedata }}
      search here <input type = "text" name= "index" /> <br>
      <input type = "submit">
     </center>
    </form>
  </BODY>
</html>

счастливого кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...