问题描述
我正在尝试使用基于django类的视图制作身份验证系统
到目前为止,我已经尝试过:
这是我的views.py文件:
from django.shortcuts import render
from django.views import generic
from .forms import UserRegistrationForm
from django.urls import reverse_lazy
class UserCreationView(generic.CreateView):
form_class = UserRegistrationForm
template_name = 'registration/register.html'
success_url = reverse_lazy('login')
这是forms.py文件
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class UserRegistrationForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ('username','email','password1','password2',)
widgets = {
'email': forms.EmailInput(attrs={'class':'input','placeholder': 'Email Address'})
}
这是urls.py文件:
from django.urls import path
from .views import UserCreationView
urlpatterns = [
path('register/',UserCreationView.as_view(),name = 'register'),]
其他urls.py文件(项目文件夹中存在urls.py文件)
path('users/',include(urls)),path('users/',include('authentication.urls')),
此代码的问题是,每当我登录时,我仍然可以通过转到登录网址(在这种情况下为登录网址:http://localhost:8000/users/login/
)进行登录和注册,如何限制用户重新登录
解决方法
我发现了默认的 LoginView() 类
django.contrib.auth import views
有一个名为
的布尔属性redirect_authenticated_user
我相信这就是您要找的。p>
只需在 https://docs.djangoproject.com/en/3.2/topics/auth/default/ 中查找 class LoginView
,您就会看到它。