python - Django 3.0 中自定义用户模型的身份验证
问题描述
我是 Django 新手,我正在尝试对我的自定义用户模型进行用户身份验证。我的模型创建成功,并且一个'createsuperuser'
命令在其中插入了新用户。然后我可以使用这些帐户登录,一切正常。但我希望能够从我的注册表单中插入新用户。我按照 Django 文档中的步骤进行操作,但是它没有插入新用户。它没有给我任何错误,因此我将不胜感激。
设置.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
}
]
表格.py
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import User
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = User
fields = ('username', 'full_name', 'country', 'city', 'birthday', 'language', 'email')
class CustomUserChangeForm(UserChangeForm):
class Meta:
model = User
fields = UserChangeForm.Meta.fields
视图.py
from django.views.generic.edit import CreateView
from .forms import CustomUserCreationForm
class Register(CreateView):
form_class = CustomUserCreationForm
success_url = reverse_lazy('login')
template_name = 'movies_app/register.html'
电影项目/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('movies_app/', include('django.contrib.auth.urls')),
path('', include('movies_app.urls', namespace='movies_app')),
]
电影应用程序/urls.py
from django.urls import path
from . import views
from .views import Register
app_name = 'movies_app'
urlpatterns = [
path('', views.index, name='index'),
path('register/', Register.as_view(), name='Register')
]
解决方案
在收到任何发布请求后,您不会将用户保存在 views.py 中。
试试下面的代码:
def signup(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=raw_password)
login(request, user)
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'signup.html', {'form': form})
或者您可以按照以下网址了解更多详情。
https://simpleisbetterthancomplex.com/tutorial/2017/02/18/how-to-create-user-sign-up-view.html
推荐阅读
- javascript - 如何在 wordpress 循环和 get_post() 中添加 Lightbox?
- laravel - 错误的对象类型:7 错误:laravel 中的有序集聚合模式需要 WITHIN GROUP
- javascript - 什么时候数组不通过引用传递
- vba - 如何使此宏仅适用于选定的文本?可以让它跑得更快吗?
- firebase - 如何在 Flutter Firebase 应用程序中捕获 DatabaseError
- django - Django QuerySet:将查询结果格式化为自定义字典
- mysql - MYSQL,需要所有日期和第一个日期的列表
- amazon-web-services - 我可以使用哪些 AWS 服务和工作流程从 API 提取和分析 JSON 日常使用数据?
- java - lombok 常量需要 mvn install
- pandas - 熊猫读取文件避免不需要的分隔符