繁体   English   中英

如何在 Django 中使用基于 Class 的视图制作注册视图?

[英]How to make a signup view using Class based views in Django?

当我开始使用 Django 时,我使用 FBV(基于 Function 的视图)来处理几乎所有事情,包括注册新用户。

但是随着我对项目的深入研究,我意识到基于类的视图通常更适合大型项目,因为它们更干净且可维护,但这并不是说 FBV 不是。

无论如何,我将整个项目的大部分视图迁移到基于类的视图,除了一个有点令人困惑的 SignUpView。

为了在 Django 中创建 SignUpView,您需要使用CreateViewSuccessMessageMixin来创建新用户并显示确认帐户已成功创建的成功消息。

这是代码:

views.py

from .forms import UserRegisterForm
from django.views.generic.edit import CreateView

class SignUpView(SuccessMessageMixin, CreateView):
  template_name = 'users/register.html'
  success_url = reverse_lazy('login')
  form_class = UserRegisterForm
  success_message = "Your profile was created successfully"

以及forms.py

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

class UserRegisterForm(UserCreationForm):
  email = forms.EmailField()

  class Meta:
      model = User
      fields = ['username', 'email', 'first_name']

您可以使用 Django 的 CreateView 来创建新用户 object。

# accounts/views.py
from django.contrib.auth.forms import UserCreationForm
from django.urls import reverse_lazy
from django.views import generic


class SignUp(generic.CreateView):
    form_class = UserCreationForm
    success_url = reverse_lazy('login')
    template_name = 'signup.html'

有关更多信息,请查看https://learndjango.com/tutorials/django-signup-tutorial

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM