gpt4 book ai didi

regex - Django:使用正则表达式检查表单中的 CharField 格式

转载 作者:行者123 更新时间:2023-12-02 09:26:26 25 4
gpt4 key购买 nike

class CapaForm(forms.Form):
capa = forms.CharField(required=False)

提交表单后,我想检查 capa 字段的格式。我想要求用户正确输入 capa 格式,包括 6 个数字、一个破折号和两个数字。 (######-##)

def search(self):
capa = self.cleaned_data.get('capa', None)

if ("\d{6}\-\d{2}" or None) not in capa:
raise forms.ValidationError("CAPA format needs to be ######-##!")

目前不允许我提交格式正确的 capa 并抛出 ValidationError。我认为问题是我试图将正则表达式与对象进行比较。如何检查用户尝试提交的“capa”的格式?

************更新

现在一切正常,除了当我在 CAPA 字段中输入错误的格式时。我收到错误 View events.views.index 没有返回 HttpResponse 对象。它返回 None 。这与我所做的更改有关吗?

from django.core.validators import RegexValidator
my_validator = RegexValidator("\d{6}\-\d{2}", "CAPA format needs to be ######-##.")

class CapaForm(forms.Form):
capa = forms.CharField(
label="CAPA",
required=False, # Note: validators are not run against empty fields
validators=[my_validator]
)

def search(self):
capa = self.cleaned_data.get('capa', None)
query = Incident.objects.all()
if capa is not '':
query = query.filter(capa=capa)
return(query)

最佳答案

首先你需要一个正则表达式验证器: Django validators / regex validator

然后,将其添加到您的字段的验证器列表中: using validators in forms

下面是简单的例子:

from django.core.validators import RegexValidator
my_validator = RegexValidator(r"A", "Your string should contain letter A in it.")

class MyForm(forms.Form):

subject = forms.CharField(
label="Test field",
required=True, # Note: validators are not run against empty fields
validators=[my_validator]
)

关于regex - Django:使用正则表达式检查表单中的 CharField 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31705282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com