Как получить только значения sqlite, а не имя столбца, а затем показать их пользователю в html? - PullRequest
1 голос
/ 09 апреля 2020

Я делаю простое веб-приложение, используя flask, где пользователь может поделиться своими рецептами с другими пользователями.

В заключение, вы должны ввести ингредиенты рецепта и шаги, а затем вставить те в базу данных sqlite, а затем показать их, что является моей проблемой, я получаю это: https://i.stack.imgur.com/t7nGj.png

, что определенно то, что я не ищу.

Я хочу получить только значения (этапы создания бургера) без имени столбца («направление»), это мой код:

@app.route("/recipes")
@login_required

def recipes():

# gets all the recipes
recipes = db.execute("SELECT * FROM recipes;")

# list of all the direction, for each recipe
directions_list = []

# loops through directions table and gets each direction for each recipe
for recipe in recipes:
    dirs = {}
    directions = db.execute("select direction from directions where recipe_id = :recipe_id", recipe_id = recipe['id'])
    dirs = directions
    directions_list.append(dirs)

print(directions_list, file=sys.stderr)

return render_template("recipes.html", recipes = recipes, directions_list = directions_list)

, и это мой код HTML, где я должны представлять эти данные:

{% block main %}
<div class="card-deck">
  <div class="row row-cols-1 row-cols-md-2">
    {% for recipe in recipes %}
      <div class="col mb-3">
        <div class="card">
          <img src="..." class="card-img-top" alt="...">
          <div class="card-body">
            <h5 class="card-title">{{recipe['name']}}</h5>
            <p class="card-text">{{recipe['description']}}</p>
            <div class="row">
              <div class="col">
                Prep: {{recipe['prep']}}m
              </div>
              <div class="col">
                Cooking: {{recipe['cooking']}}m
              </div>
              <div class="col">
                Ready in: {{recipe['ready']}}m
              </div>
            </div>
            <ul>
              {% for direction in directions_list %}
              <li>{{directions_list[recipe['id']-1]['direction']}}</li>
              {% endfor %}
            </ul>
          </div>
        </div>
      </div>
    {% endfor %}
  </div>
</div>
{% endblock %}


is there any easier and better way to show those recipe steps? and maybe if I could list each of them as a bullet list element?


  [1]: https://i.stack.imgur.com/t7nGj.png

1 Ответ

0 голосов
/ 10 апреля 2020

Этот l oop никогда не использует direction, что должно привлечь ваше внимание.

   {% for direction in directions_list %}
                  <li>{{directions_list[recipe['id']-1]['direction']}}</li>

Но что же ему следует повторить? Разве это не член directions_list, который соответствует этому рецепту? (ie recipe['id'] - 1)

В чистом виде python это должно дать желаемый результат *:

for recipe in recipes:
    for direction in directions_list[recipe['id'] - 1]:
        print(direction['direction'])

* Предлагаемый код основан на предположении, что метод execute возвращает список словарей.

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