我有一個注冊表單,可以驗證電子郵件欄位是否包含 gmail,如果不是則給出錯誤。
表格.py
def clean_email(self):
submitted_data = self.cleaned_data['email']
if '@gmail.com' not in submitted_data:
raise forms.ValidationError('You must register using a gmail address')
視圖.py
class SignUpView(View):
form_class = SignUpForm
template_name = 'user/register.html'
def get(self, request, *args, **kwargs):
form = self.form_class()
return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.is_active = False # Deactivate account till it is confirmed
user.save()
current_site = get_current_site(request)
subject = 'Activate Your Account'
message = render_to_string('user/account_activation_email.html', {
'user': user,
'domain': current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
'token': account_activation_token.make_token(user),
})
user.email_user(subject, message)
return redirect('confirm_registration')
return render(request, self.template_name, {'form': form})
我想添加一些其他“受信任的電子郵件”,以便表單允許用戶注冊,例如:@yahoo.com、@outlook.com 但我無法添加串列或元組,因為我收到錯誤:
TypeError at /signup/
'in <string>' requires string as left operand, not tuple
問題 如何創建受信任的電子郵件域串列,而不是“@gmail.com”放置電子郵件域串列?
uj5u.com熱心網友回復:
您可以創建一個list受信任的電子郵件服務并檢查您的submitted_dataieemail在您的情況下是否包含任何電子郵件服務。你可以試試這個。
def clean_email(self):
submitted_data = self.cleaned_data['email']
trusted_email_services = ["@gmail.com", "@yahoo.com", "@outlook.com"]
if not any(email_service in submitted_data for email_service in trusted_email_services)
raise forms.ValidationError('You must register using a gmail or yahoo or outlook address')
uj5u.com熱心網友回復:
從錯誤來看,您似乎正在嘗試執行以下操作:
if ['a', 'b'] in 'string'?我相信in只能檢查左側的單個專案是否在右側的迭代器中。因此,要使其正常作業,您必須在左側有一個專案,in而不是串列。
你有沒有嘗試過這樣的事情?
if not any(email in submitted_data for email in ['@gmail.com', '@otheremail.com']):
raise YourError
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/441765.html
上一篇:使用來自另一列的資料填充AccessListBox列
下一篇:將注釋輸入指標更改為頂部
