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',
),
]