Резюме и предыстория того, что я делаю:
Я создаю приложение , которое позволяет вам добавлять и хранить рецепты, и я хотел быбыть в состоянии организовать мой список рецептов, используя количество просмотров каждого рецепта.Я должен объяснить, что у меня есть список рецептов, и если вы нажмете на название одного из рецептов в этом списке, он откроет вам новую страницу и отобразит этот рецепт.Таким образом, я могу организовать свое приложение в три категории списков (Завтрак, Обед и Ужин).
Я использую MongoDB для размещения моих пар ключ / значение ("views": 0) и Я хочу иметь возможность увеличивать значениеиз "просмотров" на + 1 каждый раз, когда кто-то обновляет страницу.Я приведу свой код ниже, но я думаю, что моя проблема в том, что я не могу увеличить значение в моем HTML или MongoDB.Позвольте мне объяснить: я почти уверен, что мой код маршрутизации правильный.Я просмотрел множество учебных пособий по , которые описывают подходящий способ $ inc для значения в MongoDB , но я считаю, что мне не хватает чего-то из моего HTML, чтобы правильно соответствовать этому коду, и я не уверен, что это такое,
Когда я запускаю этот код , он все еще работает и не выдает предупреждение об ошибке, но когда я попадаю на любую страницу рецепта, счетчик просмотров не изменяется при обновлении этой страницы.Он остается только в 0.
Я должен также сказать, что у меня есть два отдельных маршрута, которые, я думаю, связаны друг с другом в этом случае: у меня есть маршрут "view_recipe", который показывает страницу рецепта, и яесть маршрут "view_count", который функционирует для подсчета просмотров.Ниже я приведу оба этих документа вместе с моим HTML-кодом, чтобы все могли их проверить.
Что я уже пробовал:
Для моего приложения рецептов яСледуя инструкциям на Youtube о том, как $ inc мой ключ / значение, я не уверен в информации, которую я должен предоставить своему HTML.Основываясь на других примерах, моя соответствующая информация о просмотре в HTML выглядит следующим образом:
<a href="{{url_for('view_recipe', recipe_id=recipe._id)}}" class="waves-effect waves-light btn btn_small blue">{{recipe.views})</a>
Я предоставил url_for для маршрута и сделал то, что мне показалось релевантным recipe_id = recipe._id, как я видел в других примерахЯ использовал таргетинг на идентификатор.
Мой код:
Вот мои маршруты для "view_recipe" и "view_count ":
@app.route('/view_recipe/<recipe_id>')
def view_recipe(recipe_id):
the_recipe = mongo.db.recipes.find_one({"_id": ObjectId(recipe_id)})
return render_template('view_recipe.html', recipe=the_recipe)
@app.route('/view_count/<recipe_id>')
def view_count(recipe_id):
mongo.db.recipes
recipes.update({'_id': str(recipe_id)}, {'$inc': {'views': int(1)}})
return url_for('view_recipe.html')
и вот раздел для подсчета просмотров, который я предоставил в моем " view_recipe.html ", где я размещаю {{recipe.view}}
<a href="{{url_for('view_recipe', recipe_id=recipe._id)}}" class="waves-effect waves-light btn btn_small blue">{{recipe.views})</a>
Что происходит, когда я запускаю этот код, против того, что я ожидаю:
Код выполняется, но не увеличиваетсякак я и ожидал.Счетчик просто остается на 0 и не повышается, когда я обновляю страницу.Я надеюсь, что после обновления страницы значение счетчика будет увеличиваться и отображаться в браузере и обновляться в моей коллекции MongoDb.
На всякий случай ...
Если вам нужна дополнительная информация, или если я не достаточно ясно объяснил или объяснил это хорошо, пожалуйста, дайте мне знать, и я исправлю это.
Спасибо.