Всего новичок!Очень потеряли в том, как отправить данные JSON через колбу для отображения на веб-странице HTML? - PullRequest
0 голосов
/ 02 мая 2019

Я очень новичок в бэкэнд-веб-разработке, а также в веб-разработке.Прямо сейчас у меня есть скрипт на python, который использует колбу для раскрутки веб-сервера.У меня есть метод в этом сценарии, который принимает имя истории в качестве входных данных и возвращает текст как часть большего набора JSON (см. Фрагмент кода).Отдельно у меня есть HTML-страница, через которую я пытаюсь отобразить возвращенные данные JSON с веб-сервера.Я пытаюсь понять, как ... заставить HTML-страницу и JSON-сервер общаться друг с другом?Прямо сейчас я использую Postman для доступа к возвращенным данным JSON.Я знаю, что функция render_template должна вызываться в возвращаемой функции с переменной 'data' в качестве параметра ... но я не уверен, что делать после этого?Любая помощь очень ценится.

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

@app.route('/story/<title>', methods=["GET"])
def display_story(title):

    db = MySQLdb.connect("mysql-server", "root", "secret", "mydb")
    cursor = db.cursor()
    cursor.execute("SELECT * FROM stories WHERE title = %s", (title,))
    rows = cursor.fetchone()
    if (rows != None):
        data = {"title": rows[0], "text": rows[1], "current_user": rows[2], "state": rows[3]}
        db.close()
        resp = Response(json.dumps(data), status=200, mimetype='application/json')
        return resp

    data = { "Error": "There is no story with that title." }
    resp = Response(json.dumps(data), status=404, mimetype='application/json')
    return resp

1 Ответ

1 голос
/ 02 мая 2019

Хорошо, я сейчас же дам быстрое решение вашей проблемы. Во-первых, ваш метод SQL-запросов? это не так хорошо. Вам нужно использовать SQLAlchemy, например, чтобы сделать его лучше. Во-вторых, вам не нужно передавать JSON с данными запроса, чтобы он был доступен для вашей веб-страницы, есть более простой способ, JINJA.

И я приложу несколько отличных ресурсов ниже, которые помогут вам узнать больше, через неделю или меньше. Это тот же, который я использовал, чтобы начать во Фляске. Абсолютно простой и легкий ответ на все ваши вопросы. Вот более подробный, если вы не под моим решением ниже, используйте это, чтобы узнать.

Итак, решение:

  1. Реализация SQLAlchemy . Упрощает жизнь и упрощает запросы. Как это работает, возможно, прочитано несколько дней, поэтому я оставлю вам ссылку, которую вы можете начать читать, чтобы лучше понять. Ваш запрос в SQLAlchemy будет выглядеть следующим образом.
query = db.session.query(stories).filter(stories.title == xyz).all()

тогда запрос переменной можно вызвать в render_template и передать на страницу HTML. вот так

return render_template('webpage.html', title='XYZ', query=query)

Я также предполагаю, что ваша таблица выглядит примерно так,

class stories(db.Model):
    __tablename__ = 'stories'

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String)
    text = db.Column(db.String)

  1. Learn Jinja , это движок шаблонов, который делает взаимодействие Python - HTML простым. На вашей HTML-странице вы можете использовать данные, полученные в запросе, например:
<html>
<body>
<p>
Title : {{query.title}}
Text : {{query.text}}
</p>
</body>
</html>

А на вашей HTML-странице будут показаны данные запроса без хлопот с использованием JSON для отправки данных и всего, что вы в данный момент делаете.

РЕСУРСЫ для обучения:

Поскольку вы новичок, и этот вопрос показывает, что ваши знания в этой области очень ограничены. Я НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ эту серию Youtube.

Посмотрите первые 4-5 базовых знаний о том, как работают Flask, Jinja и SQL Alchemy. Ссылка здесь: Справочник Кори М. Шефера по настойке .

Все объяснено ясно и показано тоже.

В конце этой серии видеороликов, по крайней мере, первых 4 видео, вы сможете создавать простые веб-страницы, основанные на базе данных, используя Flask, как основной блог-сайт (Глядя на ваш код, это несколько похоже на то, делают.)

...