() отсутствует 1 обязательный позиционный аргумент: 'id' - PullRequest
0 голосов
/ 21 октября 2018

Я получаю сообщение об ошибке при попытке отобразить отдельные элементы.Это мой код, я надеюсь, что это понятно.Я использую django 1.11

1.my url page:

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 (запрос, идентификатор):

excur = Excursion.objects.get(id = id)


return render(request, "excursions/single.html", {"excur": excur })

моя ошибка: Ошибка типа / singleexcursion // singleexcur () отсутствует 1 обязательный позиционный аргумент: 'id'

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Начиная с , был введен новый синтаксис, так что вы можете записывать параметры, такие как <int:id>, но это не , применимое в конструкциях url(..), здесь вынеобходимо записать путь в синтаксисе, подобном регулярному выражению, чтобы вы могли указать URL-адрес следующим образом:

# before Django-2.0

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

Или в и выше вы можете использовать path(..) [Джанго-док] .Вы можете чередовать его с помощью re_path(..) [Django-doc] , которое является новым именем url(..), так как url(..) [Django-doc] , вероятно, в конечном итоге будет удалено.

Например:

# Django-2.0 and above

urlpatterns = [
    <b>re_path(</b>r'^$', views.home, name='home'<b>)</b>,
    <b>re_path(</b>r'^about/$', views.aboutus, name='aboutus'<b>)</b>,
    <b>re_path(</b>r'^specialoffers/$', views.offers, name='offers'<b>)</b>,
    <b>re_path(</b>r'^contactus/$', views.contact, name='contact'<b>)</b>,
    <b>re_path(</b>r'^excursions/$', views.excursions, name='excursions'<b>)</b>,
    <b>path(</b>'singleexcursion/<b><int:id></b>/', views.singleexcur, name='singleexcur'<b>)</b>,
    <b>re_path(</b>r'^booking/$', views.booking, name='booking'<b>)</b>,
    <b>re_path(</b>r'^confirmation/$', views.confirming, name='confirming'<b>)</b>,
    <b>re_path(</b>r'^payment/$', views.payment, name='payment'<b>)</b>,
]
0 голосов
/ 21 октября 2018

Простой способ обработки пустого идентификатора - иметь несколько URL для экскурсии:

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