Ошибка ввода в /учетные записи/регистрация/ Просмотр.__init__() принимает 1 позиционный аргумент, но было дано 2

#django #django-allauth

#джанго #джанго-аллаут

Вопрос:

Я использую Django allauth для аутентификации пользователей для регистрации и входа в систему. Но эта ошибка TypeError at /accounts/signup/ View.__init__() takes 1 positional argument but 2 were given возникает, когда я пытаюсь получить доступ к шаблонам регистрации и входа в систему django allauth.

urls.py:

 from django.urls import path from allauth.account import views as allauthViews from . import views    urlpatterns = [  path("", views.index, name="index"),  path("lt;int:myidgt;/", views.quiz, name="quiz"),   path('lt;int:myidgt;/data/', views.quiz_data_view, name='quiz-data'),  path('lt;int:myidgt;/save/', views.save_quiz_view, name='quiz-save'),    path("accounts/signup/", allauthViews.SignupView, name="account_signup"),  path("accounts/login/", allauthViews.LoginView, name="account_login"),  path("accounts/logout/", allauthViews.LogoutView, name="account_logout"),    path('add_quiz/', views.add_quiz, name='add_quiz'),   path('add_question/', views.add_question, name='add_question'),   path('add_options/lt;int:myidgt;/', views.add_options, name='add_options'),   path('results/', views.results, name='results'),   path('delete_question/lt;int:myidgt;/', views.delete_question, name='delete_question'),   path('delete_result/lt;int:myidgt;/', views.delete_result, name='delete_result'),  ]  

Просмотр регистрации

 class SignupView(  RedirectAuthenticatedUserMixin,  CloseableSignupMixin,  AjaxCapableProcessFormViewMixin,  FormView, ):  template_name = "account/signup."   app_settings.TEMPLATE_EXTENSION  form_class = SignupForm  redirect_field_name = "next"  success_url = None   @sensitive_post_parameters_m  def dispatch(self, request, *args, **kwargs):  return super(SignupView, self).dispatch(request, *args, **kwargs)   def get_form_class(self):  return get_form_class(app_settings.FORMS, "signup", self.form_class)   def get_success_url(self):  # Explicitly passed ?next= URL takes precedence  ret = (  get_next_redirect_url(self.request, self.redirect_field_name)  or self.success_url  )  return ret   def form_valid(self, form):  # By assigning the User to a property on the view, we allow subclasses  # of SignupView to access the newly created User instance  self.user = form.save(self.request)  try:  return complete_signup(  self.request,  self.user,  app_settings.EMAIL_VERIFICATION,  self.get_success_url(),  )  except ImmediateHttpResponse as e:  return e.response   def get_context_data(self, **kwargs):  ret = super(SignupView, self).get_context_data(**kwargs)  form = ret["form"]  email = self.request.session.get("account_verified_email")  if email:  email_keys = ["email"]  if app_settings.SIGNUP_EMAIL_ENTER_TWICE:  email_keys.append("email2")  for email_key in email_keys:  form.fields[email_key].initial = email  login_url = passthrough_next_redirect_url(  self.request, reverse("account_login"), self.redirect_field_name  )  redirect_field_name = self.redirect_field_name  site = get_current_site(self.request)  redirect_field_value = get_request_param(self.request, redirect_field_name)  ret.update(  {  "login_url": login_url,  "redirect_field_name": redirect_field_name,  "redirect_field_value": redirect_field_value,  "site": site,  }  )  return ret   callback  lt;class 'allauth.account.views.SignupView'gt; callback_args  () callback_kwargs  {} middleware_method  lt;bound method CsrfViewMiddleware.process_view of lt;django.middleware.csrf.CsrfViewMiddleware object at 0x0000017B8F25B070gt;gt; request  lt;WSGIRequest: GET '/accounts/signup/'gt; response  None self  lt;django.core.handlers.wsgi.WSGIHandler object at 0x0000017B8DF32290gt; wrapped_callback  lt;class 'allauth.account.views.SignupView'gt;  

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

1. Покажите свой код просмотра.

2. @Льюис, Представление-это джанго аллаут views.py.

3. Покажи свою urls.py

4. @KeoniGarner добавил urls.py

Ответ №1:

Вам нужно использовать as_view() в своих URL-адресах

 … urlpatterns = [  …  path("accounts/signup/", allauthViews.SignupView.as_view(), name="account_signup"),  path("accounts/login/", allauthViews.LoginView.as_view(), name="account_login"),  path("accounts/logout/", allauthViews.LogoutView.as_view(), name="account_logout"),  …  ]