Ошибка : Django 2.x Ошибка: __init __ () принимает 1 позиционный аргумент, но 2 были даны
Мне потребовалось значительное количество времени, чтобы решить эту проблему. Для будущего ссылки и возможного необходимости кого-то я хотел бы поделиться основной причиной и решением;
Когда вы посмотрите на вывод консоли, вы увидите Traceback of the Ошибка
Как ниже:
Traceback (most recent call last): File "/home/user/projects/django-cbv/.venv/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner response = get_response(request) File "/home/user/projects/django-cbv/.venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 128, in _get_response response = self.process_exception_by_middleware(e, request) File "/home/user/projects/django-cbv/.venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response response = wrapped_callback (request, *callback_args, **callback_kwargs) TypeError: __init__() take s 1 positional argument but 2 were given
Это означает, что вам нужно использовать as_view ()
В конце классовых взглядов при объявлении в URL-адресах:
# src/app/urls.py from django.urls import path from . import views app_name = "app" urlpatterns = [ path('home/', views.BookCreate.as_view(), name='homepage'), ]
Проблема в:
urlpatterns = [ path('home/', views.BookCreate, name='homepage'), ]
Это не имеет значения, это может быть любым CBV
Но для дополнительных деталей вы можете посмотреть на Посмотреть
:
# src/app/views.py from django.views.generic.edit import CreateView from .models import Book class BookCreate(CreateView): model = Book fields = ('name', 'isbn', 'author') template_name = "app/book_form.html"
Хорошо, все сделано!
Оригинал: “https://dev.to/serhatteker/django-class-based-view-typeerror-ph2”