亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么它沒有正確顯示?

為什么它沒有正確顯示?

POPMUISE 2023-10-16 10:25:31
我目前正在開發一個在線商店,人們可以將產品添加到購物車。在我的 home html 文件中,如果產品未添加到購物車,我想顯示“添加到購物車”按鈕;如果添加產品,則顯示“從購物車刪除”按鈕。但它無法正常工作。我現在收到“從購物車中刪除”按鈕。我的index.html:{% extends 'base.html' %} {% block content %}    <h1>Products</h1>    <div class="container-md">        <div class="row">            {% for product in products %}                <div class="col">                    <div class="card-deck" style="width: 18rem;">                      <img src="{{ product.image_url }}" class="card-img-top" alt="...">                      <div class="card-body">                        <a class="card-title" href="{% url 'detail-view' product.slug %}">{{ product.name }}</a>                        <p class="card-text">${{ product.price }}</p>                        {% if product in Cart.products.all %}                            <a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Add to Cart</a>                        {% else %}                            <a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Remove from Cart</a>                         {% endif %}                      </div>                    </div>                </div>            {% endfor %}        </div>    </div>{% endblock %}我的購物車的views.py:from django.shortcuts import render, redirect, HttpResponseRedirectfrom products.models import Productfrom .models import Cartfrom django.contrib import messagesfrom django.urls import reversedef cart(request):    cart = Cart.objects.all()[0]    context = {"cart":cart}    template = 'shopping_cart/cart.html'    return render(request, template, context)
查看完整描述

1 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

代替 :


{% if product in Cart.products.all %}

? ? ? <a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Add to Cart</a>

{% else %}

? ? ?<a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Remove from Cart</a>?

{% endif %}

你可以這樣嘗試:


{% if not product.cart_set.exists %}

? ? ?<a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Add to Cart</a>

{% else %}

? ? ?<a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Remove from Cart</a>?

{% endif %}

我用來reverse relation檢查該產品是否存在任何購物車。但它會檢查該產品是否在任何購物車中。這不應該是正確的,因為它應該檢查產品是否在特定的購物車中。

現在,如果您想更具體地了解該產品是否存在于某個購物車中,我建議在視圖中進行此計算。例如,在您的產品視圖中,您可以這樣做:


from django.db.models import Case, When, Value, BooleanField


cart = Cart.objects.first()


products = Product.objects.annotate(in_cart=Case(When(cart__pk=cart.id,then=Value(True)),default=Value(False),output_field=BooleanField()))


return render(request, template.html, context={'products':products})

并簽入模板:


{% if not product.in_cart %}

? ? ? ? ? <a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Add to Cart</a>

{% else %}

? ? ? ? ?<a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Remove from Cart</a>?

{% endif %}

我在這里使用 djangoconditional expression檢查產品是否在某個購物車中。

也許您的代碼中出現了更簡單的錯誤:

在你的邏輯中添加一個notif?else

{% if not product in Cart.products.all %}

? ? ? <a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Add to Cart</a>

{% else %}

? ? ?<a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Remove from Cart</a>?

{% endif %}


查看完整回答
反對 回復 2023-10-16
  • 1 回答
  • 0 關注
  • 103 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號