Не могу добавить больше параметров в пост Django

#python #django

Вопрос:

У меня проблема, я получаю ошибку post() missing 1 required positional argument: 'pk' .

Это произошло, когда я добавил в него слизняка. Есть ли какой-нибудь обходной путь? Я был бы признателен за любую помощь.

 def post(self, request, pk, username, slug):  if 'delete' in self.request.POST:  Item.objects.get(id=pk).delete()  print('deleted')  return redirect('home-page')  if 'add' in self.request.POST:  form = ItemCreationForm(self.request.POST)  if form.is_valid():  form.save()  name = form.cleaned_data.get('itemName')  item = Item.objects.create(itemName=name)  card = Card.objects.get(user=self.request.user, slug=self.kwargs.get('slug'))  card.cardItems.add(item)  return redirect('todo-page', username=self.request.user.username, slug=self.kwargs.get('slug'))  

urls.py

 path('', Home.as_view(), name='home-page'), path('todo/lt;str:usernamegt;/lt;slug:sluggt;', TodoView.as_view(), name='todo-page'), path('sign-up', Signup.as_view(), name="sign-up-page"), path('logout', views.logout_view, name='logout-page'), path('login', views.loginView, name='login-page'), path('profile/lt;str:pkgt;', ProfileView.as_view(), name='profile-page')  

*добавлены URL-адреса

Комментарии:

1. Можешь показать мне свой urls.py а URL-адрес запроса?

2. это » todo/lt;str:имя пользователяgt;/lt;str:имя пользователяgt;lt;slug:sluggt;» является URL-адресом для этого представления?

3. Да, сэр, это тот url

Ответ №1:

Это связано с тем, что ваш URL-адрес не готов к получению pk, вам нужно сделать что-то вроде

 path('todo/lt;int:pkgt;/lt;str:usernamegt;/lt;slug:sluggt;', TodoView.as_view(), name='todo-page')