Я создаю небольшой блог с помощью Flask. Но я не нашел учебных пособий или информации, которая бы решала следующую проблему: Создайте динамическую страницу с одним постом. Я хочу, чтобы на этой странице появлялся только полный пост, то есть выходящий из базы данных. Не показывая все сразу (используя для повторителя)

У меня уже есть автоматический перенаправитель, который переводит вас на динамическую страницу для каждого заголовка сообщения, мне просто нужно знать, как отображать только одно сообщение на этой странице вместо нескольких.

@app.route('/<url_post>', methods=['GET'])
def daily_post(url_post):
    with sqlite3.connect("sample.db") as connection:

        c = connection.cursor()
        c.execute("SELECT * FROM posts")
        data = c.fetchall()

Страница Post.html

    {% extends "layout.html" %}
{% block content %}

    {% for item in data %}
        <article class="media content-section">
          <div class="media-body">

            <div class="article-metadata">


              <a class="mr-2" href="/home">{{ item[0] }}</a>
              <small class="text-muted">{{ item[1] }}</small>

            </div>

            <p class="article-content">{{ item[2] }}</p>
          </div>
        </article>
    {% endfor %}

{% endblock content %}

Я хочу динамическую страницу только с одним сообщением (используйте sqlite3)

2
András Pataki 2 Окт 2019 в 20:32

1 ответ

Лучший ответ

Проблема в том, что вы захватываете каждое сообщение из таблицы posts, а затем передаете этот набор результатов в свое представление для отображения. Это проблемный код:

c.execute("SELECT * FROM posts")
data = c.fetchall()

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

Что-то вроде:

c.execute("SELECT * FROM posts WHERE <table_column_identifier>=?", (url_post))
data = c.fetchall()

Где <table_column_identifier> - это столбец в вашей posts схеме таблицы, однозначно идентифицирующий желаемое сообщение. Мне нужно увидеть определение вашей схемы таблицы, чтобы дать вам точное поле, но это, вероятно, что-то вроде id

Примечание . Вы можете повторно использовать просмотр постов на странице, если ваша новая конечная точка маршрута обеспечивает фильтрацию, как описано выше.

Надеюсь, это поможет!

1
Nathan 2 Окт 2019 в 18:50