Используя очень упрощенный c подкласс django.views.View
, я получаю TypeError
с __init__() takes 1 positional argument but 2 were given
в качестве сообщения об ошибке.
urls.py:
from myapp import views
from django.urls import path
urlpatterns = [
path('webhook/', views.Webhook, name='myapp-webhook'),
]
views.py:
from django.http import HttpResponse, HttpResponseForbidden
from django.views import View
class Webhook(View):
def get(self, request, *args, **kwargs):
"""We don't provide GET access here."""
# return 403 (Forbidden)
return HttpResponseForbidden()
def post(self, request, *args, **kwargs):
# return 200 (OK)
return HttpResponse()
tests.py:
from django.test import TestCase
class WebhookTests(TestCase):
def test_get_method_is_forbidden(self):
response = self.client.get('/webhook')
self.assertEqual(response.status_code, 403)
Теперь либо доступ к /webhook
в браузере, либо запуск ./manage.py test
приводит к:
Internal Server Error: /webhook/
Traceback (most recent call last):
[...]
TypeError: __init__() takes 1 positional argument but 2 were given
Я точно здесь что-то упускаю. Мы очень ценим указатели на то, что это такое.