Вот тестируемая вьюха:
class MainPageEditorCreate(LoginRequiredMixin, View):
raise_exception = True
def get(self, request):
if ItemOnMainPage.objects.count() == 9:
messages.warning(
request, 'Нельзя добавить на главную больше 9 товаров'
)
return redirect('main_page_editor_url')
form = ItemOnMainPageCreateForm()
return render(
request, 'mainpage/item_on_main_page_form.html', {'form': form}
)
def post(self, request):
form = ItemOnMainPageCreateForm(request.POST)
if form.is_valid():
try:
ItemOnMainPage.objects.create(
item_on_main_page=form.cleaned_data['item_on_main_page'],
position=ItemOnMainPage.objects.count() + 1
)
messages.success(request, 'Товар успешно добавлен на главную')
return redirect('main_page_editor_url')
except IntegrityError:
messages.warning(request, 'Этот товар уже есть на главной')
return redirect('main_page_editor_url')
else:
messages.warning(request, 'Что-то пошло не так!')
return redirect(request, '/')
Вот мой нерабочий тест:
def test_main_page_editor_create_view_status_code_200_POST(self):
self.c.post(
'/admin/login/', {'username': 'test', 'password': '0000'}
)
response = self.c.post(
reverse('add_item_to_main_page_url'),
{'item_on_main_page_id': 1}
)
self.assertEquals(response.status_code, 200)
Вот так ругается Django:
'<WSGIRequest: POST '/main-page-editor/add-item/'>' not found. '<WSGIRequest: POST '/main-page-editor/add-item/'>' is not a valid view function or pattern name.
Почему
reverse
возвращает url такого странного вида:
'/main-page-editor/add-item/'>'
Что за знак больше в конце, из-за которого проваливается тест? При тесте GET запроса такого не происходит, url возвращается без лишних знаков.
На всякий случай вот мой urlpatterns:
urlpatterns = [
path('', MainPageEditorList.as_view(), name='main_page_editor_url'),
path('<int:pk>/delete/', MainPageEditorDelete.as_view(), name='delete_item_from_main_page_url'),
path('<int:pk>/update/', MainPageEditorUpdate.as_view(), name='update_item_on_main_page_url'),
path('add-item/', MainPageEditorCreate.as_view(), name='add_item_to_main_page_url')
]
Скажите куда копать? Не могу понять во, что уперся.