在 Django 3 中使用类基视图实现不区分大小写的用户名和电子邮件

时间:2021-07-14 15:59:19

标签: python django

我正在尝试实现一种注册机制,该机制应该在 Django 项目中使用类基视图对用户名和电子邮件进行不区分大小写的查询。 我尝试了很多方法,但都没有奏效。有人有解决方案吗??

views.py:

class RegisterView(FormView):
    template_name = 'users/user_register.html'
    form_class = UserRegistrationForm
    redirect_authenticated_user = True
    success_url = reverse_lazy('index')

    def form_valid(self, form):
        user = form.save()
        if user is not None:
            login(self.request, user)
        return super(RegisterView, self).form_valid(form)
    
    def get(self, *args, **kwargs):
        if self.request.user.is_authenticated:
            return redirect('index')
        return super(RegisterView, self).get(*args, **kwargs)

forms.py:

class UserRegistrationForm(UserCreationForm):
    email = forms.EmailField()
    
    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']  

2 个答案:

答案 0 :(得分:0)

from keras import layers
from keras import models

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',
                        input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

model.summary()

from keras import optimizers

model.compile(loss='binary_crossentropy', optimizer=optimizers.RMSprop(lr=1e-4), metrics=['acc'])

答案 1 :(得分:0)

您可以在表单中使用 clean_<field_name> 方法。

class UserRegistrationForm(UserCreationForm):
    email = forms.EmailField()
    
    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']  

    def clean_username(self):
         username = self.cleaned_data.get('username')
         If User.objects.filter(username__iexact=username).exists():
             raise forms.ValidationError('Username Already  Exists')
         return username