简体   繁体   English

转换区分大小写

[英]Convert case sensitives

i want to convert any new enter user name to lowercase and check if the user is exist or now and use iexact to login in capital or small where should determine the login uses small or capital我想将任何新输入的用户名转换为小写并检查用户是否存在或现在并使用 iexact 登录大写或小写应该确定登录使用小写或大写

forms.py forms.py

class AddCompanyForm(forms.ModelForm):
    """
    Add company model form
    """
    name = forms.CharField(required=True)
    password = forms.CharField(widget=forms.PasswordInput())
    logo = forms.ImageField(required=False)
    phone_number = forms.CharField(widget=forms.NumberInput())
    label = forms.CharField(max_length=20)
    country = forms.ModelChoiceField(queryset=Country.objects.all())
    city = forms.ModelChoiceField(queryset=City.objects.all())
    area = forms.ModelChoiceField(queryset=Area.objects.all())
    latitude = forms.CharField(max_length=50, required=False)
    longitude = forms.CharField(max_length=50, required=False)
    water_source = forms.ModelChoiceField(queryset=WaterSource.objects.all())

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

    def __init__(self, *args, **kwargs):
        super(AddCompanyForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.layout = Layout(Row(Column('name', css_class='form-group col-md-6 mb-0'),
                                 Column('username', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
                             Row(Column('email', css_class='form-group col-md-6 mb-0'),
                                 Column('password', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
                             Row(Column('phone_number', css_class='form-group col-md-6 mb-0'),
                                 Column('logo', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
                             Row(Column('label', css_class='form-group col'), css_class='form-row'),
                             Row(Column('country', css_class='form-group col'),
                                 Column('city', css_class='form-group col'), Column('area', css_class='form-group col'),
                                 css_class='form-row'), Row(Column('latitude', css_class='form-group col'),
                                                            Column('longitude', css_class='form-group col'),
                                                            css_class='form-row'),
                             Row(Column('water_source', css_class='form-group col'), css_class='form-row'))
        self.helper.layout = self.layout

views.py视图.py

class Companies(LoginRequiredMixin, UserPassesTestMixin, FormView, ListView):
    """
    Company add edit delete view search paginator
    """
    model = Company
    template_name = 'company/index.html'
    form_class = AddCompanyForm
    success_url = reverse_lazy('companies:index')
    object_list = Company.objects.all()

def form_valid(self, form):
    user, created = User.objects.get_or_create(username=form.cleaned_data['username'],
                                               email=form.cleaned_data['email'])
    user.set_password(form.cleaned_data['password'])
    user.save()
    if created:
        address = Address(label=form.cleaned_data['label'], city=form.cleaned_data['city'],
                          area=form.cleaned_data['area'], long=form.cleaned_data['longitude'],
                          lat=form.cleaned_data['latitude'], country=form.cleaned_data['country'])
        address.save()

        company = Company(owner=user, name=form.cleaned_data['name'],
                          phone_number=form.cleaned_data['phone_number'], logo=form.cleaned_data['logo'],
                          address=address, water_source=form.cleaned_data['water_source'])
        company.save()
    return super().form_valid(form)

am try to put this function in form to convert lowercase我尝试将此 function 转换为小写形式

def clean_username(self): 
 return self.cleaned_data['username'].lower()

how i can use iexact when login and where我如何在登录时以及在哪里使用 iexact

you can match username in lowercase like this你可以像这样匹配小写的用户名

from django.db.models.functions import Lower

input_name = form.cleaned_data['username'].lower()

User.objects.annotate(username_lower=Lower("username")).filter(username_lower=input_name)

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

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