Страница загружается, но содержимое, запрашиваемое из базы данных, не отображается - PullRequest
0 голосов
/ 02 марта 2019

Я написал веб-приложение для блога с python, flask, mongodb и bootstrap.В моей работе, если я выбираю статью, программа должна зайти в базу данных, найти соответствующий идентификатор выбранной статьи и должна отобразить содержимое статьи в html-файл.Вот пример кода для маршрута:

# Home with articles displayed
@app.route('/home', methods=['GET','POST'])
def article():

    # Create Mongodb connection
    user = mongo.db.articles
    # Execute query to fetch data
    results = user.find() 

    # Iterate the data retrieved
    if results is not None:
        articles = results
        return render_template("index.html", articles=articles)
    else:
        msg = Markup("<h3>No Articles Posted.</h3>")
        return render_template("index.html", msg=msg)


# Single Article
@app.route('/home/<id>/', methods=['GET','POST'])
def post(id):
    # Create Mongodb Connection
    user = mongo.db.articles
    # execute query
    article = user.find_one({'_id': id})

    return render_template("post.html", article=article) 

Это также пример кода файла HTML:

{% extends 'base.html' %}

{% block title %} <title>Articles | Blog</title> {% endblock %}

{% block content %}

  <!-- Page Header -->
    <div class= "jumbotron">
        <h5>{{article.title}}</h5>
        <small>Written by Mr. Boss on {{article.date}} </small>
        <hr>
        <p class="lead">{{article.body}}</p>
      </div>


  <!-- Post Content -->

{% endblock %}

Страница отображается нормально, когда я выбираю статью, нопроблема в том, что он не отображает информацию из mongodb в html-файл.Вот данные mongodb в json:

{
  "_id": ObjectId("5c79d99195eded2364b03813"),
  "title":"Article One",
  "body":"This is the first article",
  "date":"2019-03-02T00:00:00.000Z"
}

Пожалуйста, я новичок в python, поэтому будьте осторожны, если я делаю какие-либо ошибки и помогаю мне решить эту проблему. Спасибо.

1 Ответ

0 голосов
/ 02 марта 2019

Я решил вопрос путем: 1. импорта from bson.objectid import ObjectId 2. изменения маршрута на этот:

# Single Article
@app.route('/home/<string:id>/', methods=['GET','POST'])
def post(id):
    # Create Mongo Connection
    user = mongo.db.articles

    # execute query
    article = user.find_one({"_id": ObjectId(id)})

    return render_template("post.html", article=article)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...