ImportError Django не может импортировать имя 'SignupView'

Так, я импортировал 'LoginView, LogoutView', но когда я попытался импортировать 'SignupView', я получил следующую ошибку: ImportError: cannot import name 'SignupView' from 'django.contrib.auth.views' (C:\Users\USER\Desktop\djang0\venv\Lib\site-packages\django\contrib\auth\views.py)

Вот что я считаю необходимым кодом.

#my views.py

from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render, redirect, reverse
from django.core.mail import send_mail
from django.views import generic
from django.http import HttpResponse
from.models import Lead, Agent
from.forms import LeadForm, LeadModelForm

class SignupView(generic.CreateView):
    template_name = "registration/signup.html"
    form_class = UserCreationForm

    def get_success_url(self):
        return reverse("login")


#my app urls.py

from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.auth.views import LoginView, LogoutView, SignupView
from django.urls import path, include
from leads.views import hero_page, HeroPageView

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', HeroPageView.as_view(), name="hero-page"),
    path('leads/', include('leads.urls', namespace="leads")),
    path('login/', LoginView.as_view(), name="login"),
    path('logout/', LogoutView.as_view(), name="logout"),
    path('signup/', SignupView.as_view(), name="signup"),
]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Я не знаю, что попробовать, я вроде как новичок в Django. Я провел много исследований на нескольких сайтах и в статьях, но единственный человек, у которого я видел подобную проблему, должен был удалить 'views' из 'from django.contrib.auth.views', потому что они работали на старой версии Django, которая, как я полагаю, была 2.0.1, но я работаю на Django версии %.0.1, которая, как я слышал, является действительной. Любая помощь будет высоко оценена, и, пожалуйста, объясните так, чтобы любой новичок мог понять.

Вы определили SignupView в своем собственном views.py, следовательно, вы импортируете его оттуда:

from app_name.models import SignupView
from django.contrib.auth.views import LoginView, LogoutView  # no SignupView

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', HeroPageView.as_view(), name='hero-page'),
    path('leads/', include('leads.urls', namespace='leads')),
    path('login/', LoginView.as_view(), name='login'),
    path('logout/', LogoutView.as_view(), name='logout'),
    path('signup/', SignupView.as_view(), name='signup'),
]

При этом ваше представление, похоже, вводит только другой шаблон и другой URL-адрес успеха, вы можете просто вставить их в CreateView:

from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.views import LoginView, LogoutView  # no SignupView
from django.urls import reverse_lazy

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', HeroPageView.as_view(), name='hero-page'),
    path('leads/', include('leads.urls', namespace='leads')),
    path('login/', LoginView.as_view(), name='login'),
    path('logout/', LogoutView.as_view(), name='logout'),
    path(
        'signup/',
        CreateView.as_view(
            template_name='registration/signup.html',
            form_class=UserCreationForm,
            success_url=reverse_lazy('login'),
        ),
        name='signup',
    ),
]
Вернуться на верх