尝试显示单个项目时,我不断收到错误消息。 这是我的代码,我希望它可以理解。我正在使用 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'),
]
我的观点页面:
def singleexcur(请求, id):
excur = Excursion.objects.get(id = id)
return render(request, "excursions/single.html", {"excur": excur })
我的错误:
/singleexcursion/int:id/ 处出现类型错误 singleexcur() 缺少 1 个必需的位置参数:'id'
处理空 ID 的一个简单方法是使用多个 url 进行游览:
url(r'^singleexcursion/', views.singleexcur, name='singleexcur'),
url(r'^singleexcursion/<int:id>/', views.singleexcur, name='singleexcur'),
从 django-2.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.0 及更高版本中,您可以使用 path(..)
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'),
]