Рубрики
Без рубрики

Django Class View – TypeError

Ошибка: Django 2.x Ошибка: __init __ () принимает 1 позитивный аргумент, но 2 были даны Мне потребовалось значение … Tagged с Django, Python, ошибками.

Ошибка : 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”