![](/img/trans.png)
[英]PyTest Case 1: Convert following UnitTest Code into PyTest:
[英]Convert case sensitives
我想將任何新輸入的用戶名轉換為小寫並檢查用戶是否存在或現在並使用 iexact 登錄大寫或小寫應該確定登錄使用小寫或大寫
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
視圖.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)
我嘗試將此 function 轉換為小寫形式
def clean_username(self):
return self.cleaned_data['username'].lower()
我如何在登錄時以及在哪里使用 iexact
你可以像這樣匹配小寫的用戶名
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.