Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据用户输入更改按钮?_Python_Django - Fatal编程技术网

Python 如何根据用户输入更改按钮?

Python 如何根据用户输入更改按钮?,python,django,Python,Django,我正在实现一个名为django购物卡的pypi包,这样用户就可以看到他们保存的帖子。 我的问题是,如果帖子已经被添加,我不能让按钮显示Remove Post而不是Add to Card。我试图创建一个不同的方法来传递已保存的帖子,但这导致了一个错误,因为如果没有for循环,我无法访问购物车的键和值。我是新来的,我将非常感谢任何意见和建议 def add_fav(request, id): cart = Cart(request) post = Auction.objects.ge

我正在实现一个名为django购物卡的pypi包,这样用户就可以看到他们保存的帖子。 我的问题是,如果帖子已经被添加,我不能让按钮显示Remove Post而不是Add to Card。我试图创建一个不同的方法来传递已保存的帖子,但这导致了一个错误,因为如果没有for循环,我无法访问购物车的键和值。我是新来的,我将非常感谢任何意见和建议

def add_fav(request, id):
    cart = Cart(request)
    post = Auction.objects.get(id=id)
    cart.add(product=post)
    return redirect("watchlist")


def item_clear(request, id):
    cart = Cart(request)
    product = Auction.objects.get(id=id)
    cart.remove(product)
    return redirect("watchlist")


def items_clear(request):
    cart = Cart(request)
    cart.clear()
    return redirect("watchlist")


def get_cart(request):
    return render(request, 'auctions/watchlist.html', {'cart': Cart(request)})


listings.html

{% block body %}
    {% for auction in object_list %}
        <div class="col-md-4">
            <div class="card mb-2">
                    <div class="card-body">
                        <h5 class="card-title"><a href="{% url 'listing' auction.pk %}">{{ auction.name }}</a></h5>
                        Price: {{ auction.price }}<br>
                        <p class="card-text">{{ auction.description|slice:":10"  }} ...</p>
                        {{ auction.author }}
                        Category: {{ auction.category }}
                        <hr><img class="card-img-top" src="{{ auction.image.url }}" alt="no" ><br>
                            {% for key,value in request.session.cart.items|slice:1 %} <br>
                                {% if value.product_id == auction.id %}
                                    - <a href="{% url 'remove_fav' value.product_id%}">Delete</a>
                                {% endif %}
                     {% endfor %}
                        <a class="btn btn-primary" id="add_card" href="{% url 'add_fav' auction.id %}"
                           style="margin-top: 10px; ">Add to card</a><br>
                    </div>
            {{ text }}
            </div>
        </div>
    {% endfor %}
{% endblock %}


这很难帮上忙,因为在你的问题中,你说我不能让按钮显示“删除帖子”而不是“添加到卡片”,但你的代码中没有“删除帖子”,所以我不确定你指的确切位置。你有一个带有“Delete”文本的“remove\u fav”url调用,这是你的意思吗?——这是我用来从收藏夹中删除博客文章的代码,它被传递到视图中的item\u clear函数,你得到了什么错误?这更像是一个逻辑错误,我想删除“添加到卡片”按钮,如果用户已通过此按钮将帖子添加到他最喜欢的帖子中,并显示“删除帖子”按钮,而不是“删除帖子”按钮,则您的视图应针对当前用户已经或尚未完成的操作进行逻辑检查,并将上下文中的结果发送到模板;然后,模板所做的只是对上下文中的内容进行条件检查,并根据需要进行分支。我现在没有时间把你的代码改写成这种格式,也许以后会。