() 缺少 1 个必需的位置参数:'id'

问题描述 投票:0回答:2

尝试显示单个项目时,我不断收到错误消息。 这是我的代码,我希望它可以理解。我正在使用 django 1.11

1.我的网址页面:

urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^about/', views.aboutus, name='aboutus'),
url(r'^specialoffers/', views.offers, name='offers'),
url(r'^contactus/', views.contact, name='contact'),
url(r'^excursions/', views.excursions, name='excursions'),
url(r'^singleexcursion/<int:id>/', views.singleexcur, name='singleexcur'),
url(r'^booking/', views.booking, name='booking'),
url(r'^confirmation/', views.confirming, name='confirming'),
url(r'^payment/', views.payment, name='payment'),

]

  1. 我的观点页面:

    def singleexcur(请求, id): excur = Excursion.objects.get(id = id)
    return render(request, "excursions/single.html", {"excur": excur })

  2. 我的错误:

    /singleexcursion/int:id/ 处出现类型错误 singleexcur() 缺少 1 个必需的位置参数:'id'

python django django-urls
2个回答
0
投票

处理空 ID 的一个简单方法是使用多个 url 进行游览:

 url(r'^singleexcursion/', views.singleexcur, name='singleexcur'),
 url(r'^singleexcursion/<int:id>/', views.singleexcur, name='singleexcur'),

0
投票

开始,引入了新的语法,这样你就可以编写类似

<int:id>
的参数,但这不适用于 url(..)
 构造,这里你需要用类似正则表达式的方式编写路径语法,因此您可以将 URL 指定为:

# before Django-2.0 urlpatterns = [ url(r'^$', views.home, name='home'), url(r'^about/$', views.aboutus, name='aboutus'), url(r'^specialoffers/$', views.offers, name='offers'), url(r'^contactus/$', views.contact, name='contact'), url(r'^excursions/$', views.excursions, name='excursions'), url(r'^singleexcursion/(?P<id>\d+)/', views.singleexcur, name='singleexcur'), url(r'^booking/$', views.booking, name='booking'), url(r'^confirmation/$', views.confirming, name='confirming'), url(r'^payment/$', views.payment, name='payment'), ]

或者在

django-2.0path(..)

 [Django-doc]。您可以将其与 re_path(..)
 [Django-doc]
交错,这是
url(..)
 的新名称,因为 
url(..)
 [Django-doc]
最终可能会被删除。

例如:

# Django-2.0 and above urlpatterns = [ re_path(r'^$', views.home, name='home'), re_path(r'^about/$', views.aboutus, name='aboutus'), re_path(r'^specialoffers/$', views.offers, name='offers'), re_path(r'^contactus/$', views.contact, name='contact'), re_path(r'^excursions/$', views.excursions, name='excursions'), path('singleexcursion/<int:id>/', views.singleexcur, name='singleexcur'), re_path(r'^booking/$', views.booking, name='booking'), re_path(r'^confirmation/$', views.confirming, name='confirming'), re_path(r'^payment/$', views.payment, name='payment'), ]
    
© www.soinside.com 2019 - 2024. All rights reserved.