Джанго шаблон не рендеринг - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь загрузить список объектов из базы данных MySQL, используя шаблоны Django.Я могу загрузить объекты из базы данных, используя Product.objects.values() и преобразовать их в dict, а затем передать этот dict в качестве контекста в функцию рендеринга.Но когда я загружаю свою страницу, она не перебирает словарь.У кого-нибудь есть идеи?

 def product(request):
    print(Product.objects.values())

    d = Product.objects.values()

    newdict = {}

    for entry in d:
        name = entry.pop('name')  # remove and return the name field to use as a key
        newdict[name] = entry

    print(newdict)
    return render(request, 'product.html', newdict)




 <div class="col-12 col-lg-6 add_to_cart_block">

            {% for item in newdict.items %}
            {{newdict|length}}
            <div class="card bg-light mb-3">
                <div class="card-body">
                    <p class="price">{{item}}</p>
                    <p class="price_discounted">149.90 $</p>
                    <form method="get" action="cart.html">
                        <div class="form-group">
                            <label for="colors">Color</label>
                            <select class="custom-select" id="colors">
                                <option selected>Select</option>
                                <option value="1">Blue</option>
                                <option value="2">Red</option>
                                <option value="3">Green</option>
                            </select>
                        </div>
                        <div class="form-group">
                            <label>Quantity :</label>
                            <div class="input-group mb-3">
                                <div class="input-group-prepend">
                                    <button type="button" class="quantity-left-minus btn btn-danger btn-number"  data-type="minus" data-field="">
                                        <i class="fa fa-minus"></i>
                                    </button>
                                </div>
                                <input type="text" class="form-control"  id="quantity" name="quantity" min="1" max="100" value="1">
                                <div class="input-group-append">
                                    <button type="button" class="quantity-right-plus btn btn-success btn-number" data-type="plus" data-field="">
                                        <i class="fa fa-plus"></i>
                                    </button>
                                </div>
                            </div>
                        </div>
                        <a href="cart.html" class="btn btn-success btn-lg btn-block text-uppercase">
                            <i class="fa fa-shopping-cart"></i> Add To Cart
                        </a>
                    </form>
                    <div class="product_rassurance">
                        <ul class="list-inline">
                            <li class="list-inline-item"><i class="fa fa-truck fa-2x"></i><br/>Fast delivery</li>
                            <li class="list-inline-item"><i class="fa fa-credit-card fa-2x"></i><br/>Secure payment</li>
                            <li class="list-inline-item"><i class="fa fa-phone fa-2x"></i><br/>+33 1 22 54 65 60</li>
                        </ul>
                    </div>
                    <div class="reviews_product p-3 mb-2 ">
                        3 reviews
                        <i class="fa fa-star"></i>
                        <i class="fa fa-star"></i>
                        <i class="fa fa-star"></i>
                        <i class="fa fa-star"></i>
                        <i class="fa fa-star"></i>
                        (4/5)
                        <a class="pull-right" href="#reviews">View all reviews</a>
                    </div>
                    <div class="datasheet p-3 mb-2 bg-info text-white">
                        <a href="" class="text-white"><i class="fa fa-file-text"></i> Download DataSheet</a>
                    </div>
                </div>
            </div>
        </div>

        {% endfor %}
    </div>

1 Ответ

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

Не видя ваших представлений, похоже, проблема в объекте контекста.Контекст представляет собой словарь, и вы передаете newdict в качестве контекста.Это означает, что элементы newdict будут ключами в контексте.Чтобы решить эту проблему, вам нужно написать следующую строку:

return render(request, 'product.html', {'newdict': newdict})

Однако есть лучший способ отображения в шаблоне.Вот пример:

views.py

@login_required
def account_index():
    accounts = Account.objects.all()
    context = {'accounts': accounts}
    return render(request, 'accounts/index.html', context)

accounts / index.html

<tbody>
      {% for account in accounts %}
          <tr>
              <td>{{ account.name }}</td>
              <td>{{ account.number }}</td>
              <td>{{ account.route }}</td>
          </tr>
      {% endfor %}
</tbody>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...