python - Django 在给定的 url 上调用错误的函数
问题描述
django 调用“listing”函数,即使我告诉它在处理转到 .../watchlist url 时出现的请求时使用“watchlist”函数。我找不到问题。这是错误:
File "/home/simon/Dokumente/cs50WebProgramming/commerce/auctions/views.py", line 103, in listing
listing_obj = AuctionListing.objects.get(id=int(listing_id))
ValueError: invalid literal for int() with base 10: 'watchlist'
网址.py
urlpatterns = [
path("", views.index, name="index"),
path("login", views.login_view, name="login"),
path("logout", views.logout_view, name="logout"),
path("register", views.register, name="register"),
path("create", views.create_listing, name="create"),
path("after_create", views.after_create, name="after_create"),
path("<str:listing_id>", views.listing, name="listing"),
path("<str:listing_id>/bid", views.after_bid, name="after_bid"),
path("watchlist", views.watchlist, name="watchlist")
]
视图.py
def listing(request, listing_id):
listing_obj = AuctionListing.objects.get(id=int(listing_id))
return render(request, "auctions/listing.html", {
"listing": listing_obj
})
def watchlist(request):
return render(request, "auctions/watchlist.html")
解决方案
问题在于您的 URL 路径的顺序。您<str:listing_id>
之前watchlist
有导致任何字符串路径与<str:listing_id>
. 只需重新排序你的路径,你应该没问题:
urlpatterns = [
path("", views.index, name="index"),
path("login", views.login_view, name="login"),
path("logout", views.logout_view, name="logout"),
path("register", views.register, name="register"),
path("create", views.create_listing, name="create"),
path("after_create", views.after_create, name="after_create"),
path("watchlist", views.watchlist, name="watchlist")
path("<str:listing_id>/bid", views.after_bid, name="after_bid"),
path("<str:listing_id>", views.listing, name="listing"),
]
推荐阅读
- python - Python中有没有办法获取一个字符串并找到与之关联的列表?
- powershell - Windows cmdlet over powershell 通过,但通过 winrm 拒绝访问以进行群集感知更新
- sinon - SinonJS 存根不在 .on 范围内工作
- c# - 为什么自定义中间件使用位置会影响其调用?
- r - R逻辑回归在循环中提取系数:设置循环时出错
- python - 如何使用 lstm 执行多类多输出分类
- java - 为什么将某些东西声明为双精度数据类型会导致 ide 认为它是整数?
- python - %matplot inline 过时了吗?
- math - 运算符(AND、OR)和操作数(T/F)的表达式树
- vue.js - 在 vue-cli 环境中同时应用 vuetify 和 vue-loader 出现错误