作为表单的一部分,我使用了一个带有regex模式的RegexField。提交表单后,当到达security_code = cleaned_data['security']
时,我会收到一个keyrorm
我知道,一旦调用表单的是有效的()方法,清理的数据字典只保留通过验证的键/值。然而,我不理解为什么在这种情况下,用户提供给表单字段的字符串没有通过验证
如果我将RegexField切换为CharField,则两个字段的数据都会显示在清理后的数据中
from django import forms
class CreditCardForm(forms.Form):
cc_number = forms.CharField()
security = forms.RegexField(r'^\d{3}', max_length=3)
def clean(self):
cleaned_data = super().clean()
card_number = cleaned_data['cc_number']
security_code = cleaned_data['security']
if card_number and security_code:
if card_number.startswith('4') and len(security_code) != 3:
raise forms.ValidationError("Invalid credit card information")
class CommentPage(View):
def get(self, request):
cc_form = CreditCardForm()
return render(request, 'member_access/access.html', {'form' : cc_form})
def post(self, request):
submitted_cc_form = CreditCardForm(request.POST)
if submitted_cc_form.is_valid():
return HttpResponse("Submission successful!")
return HttpResponse(reverse('member_access:user_login'))
目前没有回答
相关问题 更多 >
编程相关推荐