如何解决Django 错误 NoReverseMatch at /new_bid/1 Reverse for 'addwatchlist' with arguments '('',)' not found
我对 Django 有点陌生。我遇到了一个我觉得很奇怪的错误。 该站点允许用户对某个项目进行出价(输入数量),类似于 ebay。 当我输入号码时,出现错误“noreverseMatch at /new_bid/1 未找到带有参数 '('',)' 的 'addwatchlist' 反转。尝试了 1 个模式:['addwatchlist/(?P[0-9]+)$']
这很奇怪,因为代码区域(views.py 中的 new_bid)与 addwatchlist 无关。 views.py 中的 addwatchlist 将此特定项目添加到该用户的列表中。这只是为了让用户可以跟踪他们想要观看的网站上的任何项目。
监视列表功能完全正常 - 我可以将一个项目添加到我的监视列表中,这很好。 我不知道为什么这个函数会与我的另一个函数 new_bid 进行交互,后者会为该项目添加出价。我知道这个错误通常与 url 或 html 模板调用 url 的方式有关,但我真的不知道他们两个为什么交互。是因为他们都使用 "id": listingid 吗?任何帮助表示赞赏!
urls.py 用于相关网址:
urlpatterns = [
path("addwatchlist/<int:listingid>",views.addwatchlist,name="addwatchlist"),path("new_bid/<int:listingid>",views.new_bid,name="new_bid"),]
views.py 用于监视列表:
def addwatchlist(request,listingid):
if request.user.username:
entry = Watchlist()
entry.user = request.user.username
entry.listingid = listingid
entry.save()
return redirect('listingpage',id=listingid)
else:
return redirect('index')
views.py 用于添加您的出价:
def new_bid(request,listingid):
if request.method == 'POST':
auction_to_add = Listings.objects.get(id=listingid)
total_bid = request.POST.get("total_bid")
bid = Bid.objects.create(user=request.user,listingid=auction_to_add,bid=total_bid)
auction_to_add.bids.add(bid)
auction_to_add.last_bid = bid
auction_to_add.save()
return render(request,"auctions/listing.html",{
"id": listingid,})
else:
return render(request,})
用于出价的 html 文件的一部分:
<p class="lead" align="justify"><strong>Place your Bid : </strong></p>
<form action="{% url 'new_bid' product.id %}" method="POST">
{% csrf_token %}
<div class="form-group">
<input class="form-control" type="text" name="newbid" placeholder="Your
Bid">
</div>
<p align="justify"><input class="btn btn-primary" type="submit" value="Submit"></p>
</form>
<a href="{% url 'addwatchlist' product.id %}"><button class="btn btn-primary">Add to Watchlist</button></a>
这是 views.py 的一部分,它将显示站点上特定项目的页面本身:
def listingpage(request,id):
comments = Comments.objects.filter(listingid=id)
item = Listings.objects.get(id=id)
return render(request,{
"id": id,"comments": comments,"product": item,})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。