Python 与#x27相反';带参数';(';';,)';没有找到。尝试了1个模式

Python 与#x27相反';带参数';(';';,)';没有找到。尝试了1个模式,python,python-3.x,django,django-views,django-urls,Python,Python 3.x,Django,Django Views,Django Urls,每当我点击我的列表页面上的提交按钮时,就会出现这个错误。我已经查看了触发这种错误的典型位置,但我看不出我在这里做错了什么 错误: Reverse for 'listing' with arguments '('',)' not found. 1 pattern(s) tried: ['listing/(?P<id>[0-9]+)$'] 我知道,在我的视图和URL中,我传递了id参数,但在模板上,我传递了listing.id参数,但由于某种原因,这在我的整个项目中都起作用,但在这里不

每当我点击我的列表页面上的提交按钮时,就会出现这个错误。我已经查看了触发这种错误的典型位置,但我看不出我在这里做错了什么

错误:

Reverse for 'listing' with arguments '('',)' not found. 1 pattern(s) tried: ['listing/(?P<id>[0-9]+)$']
我知道,在我的视图和URL中,我传递了id参数,但在模板上,我传递了listing.id参数,但由于某种原因,这在我的整个项目中都起作用,但在这里不起作用。实际上,我只是尝试将视图和URL中的所有参数更改为listing_id以匹配模板中的listing.id,这产生了完全相同的错误,所以我真的迷路了

视图.py

def closeListing(request, id):
    bids = Bid.objects.filter(bid_item_id=id).order_by('-bid_input')
    winner = Bid.objects.filter(bid_item_id=id).latest('bid_input').bidder.id
    winner_name = Bid.objects.filter(bid_item_id=id).latest('bid_input').bidder.username
    currentHighest = Bid.objects.filter(bid_item_id=id).aggregate(Max('bid_input'))['bid_input__max']
    if request.method == "POST":
        if bids == 0:
            return render(request, "auctions/closeListing.html", {
                    "bids": bids,
                    "error": "No bids have been placed on your listing",
                    })
        else:
            Listing.objects.filter(id=id).update(status='closed')
            Listing.objects.filter(id=id).update(winner=winner)
            closed = True
            return render(request, "auctions/closeListing.html", {
                "bids": bids,
                "current": currentHighest,
                "winner": winner_name,
                "closed": True
            })
    else:
        return render(request, "auctions/closeListing.html", {
            "bids": bids
        })
path("listing/<int:id>/close", views.closeListing, name="closelisting")
url.py

def closeListing(request, id):
    bids = Bid.objects.filter(bid_item_id=id).order_by('-bid_input')
    winner = Bid.objects.filter(bid_item_id=id).latest('bid_input').bidder.id
    winner_name = Bid.objects.filter(bid_item_id=id).latest('bid_input').bidder.username
    currentHighest = Bid.objects.filter(bid_item_id=id).aggregate(Max('bid_input'))['bid_input__max']
    if request.method == "POST":
        if bids == 0:
            return render(request, "auctions/closeListing.html", {
                    "bids": bids,
                    "error": "No bids have been placed on your listing",
                    })
        else:
            Listing.objects.filter(id=id).update(status='closed')
            Listing.objects.filter(id=id).update(winner=winner)
            closed = True
            return render(request, "auctions/closeListing.html", {
                "bids": bids,
                "current": currentHighest,
                "winner": winner_name,
                "closed": True
            })
    else:
        return render(request, "auctions/closeListing.html", {
            "bids": bids
        })
path("listing/<int:id>/close", views.closeListing, name="closelisting")
path(“listing//close”,views.closeListing,name=“closeListing”)
listingPage.html

{% if request.user.is_authenticated and request.user == listing.lister %}
<div>
   <form action="{% url 'closelisting' listing.id %}" method="post">
        {% csrf_token %}
        <input type=submit value="Close Listing">
   </form>
</div>
{% endif %}
{%if request.user.u经过身份验证且request.user==listing.lister%}
{%csrf_令牌%}
{%endif%}

我认为这些代码片段都没有显示错误的位置。它看起来可能在
closeListing.html
中。它肯定会出现在你在模板中使用过的某个地方(或者可能是视图中的
reverse('listing',…)
。谢谢@RobinZigmond你是对的。在
closeListing.html
上,我有一个链接,可以使用
{%URL'listing'listing.id%}返回到原始列表
。现在我已经删除了该链接,页面加载正常,但我不明白该URL失败的原因。可能是因为
listing.id
不存在或
None
。请查看视图。