- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Django 中创建了一个完全工作的表单 - 但是当我尝试定义一个函数来引发自定义 form.ValidationError
时,它会中断。
# importing form modules
from django import forms
import re
# define the forms
class single_input(forms.Form):
CHROMOSOMES = (
('1' , '1'),
('2' , '2'),
('3' , '3'),
('4' , '4'),
('5' , '5'),
('6' , '6'),
('7' , '7'),
('8' , '8'),
('9' , '9'),
('10' , '10'),
('11' , '11'),
('12' , '12'),
('13' , '13'),
('14' , '14'),
('15' , '15'),
('16' , '16'),
('17' , '17'),
('18' , '18'),
('19' , '19'),
('20' , '20'),
('21' , '21'),
('22' , '22'),
('23' , '23'),
('X' , 'X'),
('Y ' , 'Y')
)
def clean_testname(self):
print self.cleaned_data
testname = self.cleaned_data['testname']
genome_pos = self.cleaned_data['genome_pos']
if ( not re.match(r"^\w+$", testname)):
raise forms.ValidationError(
"Test name is only allowed letter's number's and _'s ."
"NO spaces or funny things that involve the shift button"
)
if ( not re.match(r"^\s+$", genome_pos)):
raise forms.ValidationError(
"Genome position is only allowed numbers and -'s"
"NO spaces, letter or funny things that involve the shift button"
)
return cleaned_data
testname = forms.CharField ( label='testname', max_length=100 )
chromosome = forms.ChoiceField( label='chromosome', choices = CHROMOSOMES , required = True)
genome_pos = forms.CharField ( label='genome_pos', max_length=15 )
问题是它只将第一个表单字段放入cleaned_data
中,因此上面代码中的print clean_data
看起来像:
{'testname': u'ssss'}
如果我注释掉整个 clean_testname
函数,我会得到一个工作输出
{'genome_pos': u'xxx', 'testname': "name", 'chromosome': u'1'}
最佳答案
问题是您正在尝试清理 clean_testname
方法中的 testname
和 genome_pos
字段。
您应该清理 clean_testname
方法中的 testname
字段,以及 clean_genome_pos
方法中的 genome_pos
字段.
如果你想validate fields that depend on each other ,那么这属于 clean
方法。在本例中,您似乎不需要 clean
方法,因为字段名称似乎并不相互依赖。
class SingleInput(forms.Form):
# It would be better to name the form SingleInput rather than single_input
def clean_testname(self):
test_name = self.cleaned_data['testname']
# validate testname, raise ValidationError if necessary.
# you can't access any other fields from self.cleaned_data here
return testname
def clean_genome_pos(self):
test_name = self.cleaned_data['genome_pos']
# validate genome_pos, raise ValidationError if necessary.
# you can't access any other fields from self.cleaned_data here
return genom_post
def clean(self):
cleaned_data = super(SingleInput, self).clean()
# you need to handle case when the fields do not exist in cleaned_data
testname = cleaned_data.get('testname')
genome_pos = cleaned_data.get('genome_pos')
if testname and genome_pos:
# do any checks that rely on testname *and* genome_pos, and
# raise validation errors if necessary
...
return cleaned_data
您的情况的另一个选择是使用 RegexField
而不是自定义清理方法。
class SingleInput(forms.Form):
testname = forms.RegexField(
label='testname',
max_length=100,
regex=r"^\w+$",
message="<error message>",
)
...
关于python - Django self.cleaned_data 问题。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36895306/
我的 views.py 代码: def update_details(request): if request.method == "POST": form = Upda
我正在尝试使用 Django 文档生成表单。我不断收到错误消息: 'TestForm' object has no attribute 'cleaned_data' 即使 form.is_valid
我有一个表格: class OrderForm(forms.Form): delivery_time = models.CharField(max_length=100) addres
如标题所述...有什么区别?我看到人们一直在说使用 cleaned_data 并且在视频中人们仍然这么说但只是说它会清理数据但是当我使用 print print form.cleaned_da
我想创建一个表单和 validation_forms,如果另一个框被正确选中,它会检查一个框中是否出现某些文本, class Contact_form(forms.Form): def __init_
我正在尝试为我的站点创建一个登录表单,但是当我在我的 views.py 中使用 cleaned_data 时,我没有获得正确的数据。这是我的代码: views.py def login_page(re
为什么我们使用 cleaned_data firstname= form.cleaned_data.get("first_name") 这有什么意义,为什么有必要? 最佳答案 当您在表单上调用 is_
我在我的模板中加入了一些客户端 Javascript,允许用户动态地向表单添加字段。我的问题是这些字段在 form.cleaned_data 中被清除,所以我无法通过这种方式访问它们。 所有字段都
我一直在玩弄表单,似乎无法理解为什么cleaned_data没有给我任何可用的输出(又名字典似乎完全是空的)。我喜欢做的是在页面上有一个带有两个日期选择器的表单,以便用户可以选择起始日期和截止日期,然
在 Django 中创建了一个完全工作的表单 - 但是当我尝试定义一个函数来引发自定义 form.ValidationError 时,它会中断。 # importing form modules f
我正在使用 django 来数字化表单。这个表格有点复杂,里面有很多字段。我想知道 Django 是否可以为所有字段执行 form.cleaned_data[] ,而不是为每个字段单独声明诸如 obj
我是技术新手,所以如果问题太简单,我提前道歉。 我正在使用 self.cleaned_data 获取用户输入的选定数据。它在调用 clean 时起作用,但在我的保存方法上不起作用。 这是代码 表格.p
我使用 Django 客户用户模型为用户注册创建的表单有一个奇怪的问题。我正在运行 Django 1.6.5。 表单.py class SignupForm(forms.ModelForm):
我有一个如下所示的表单: class AForm(forms.ModelForm): email1 = forms.EmailField(required=False, initial='')
我有一个允许用户上传文本和文件的表单。但是,即使用户不上传文件(文件是可选的),我也想让它有效。但是,在 Django 中,它不允许我通过“clean(self)”。我只想简单一点——如果是文本框,则
感谢 Insin 回答之前的 question与此相关。 他的回答很有效,但我对“cleaned_data”的提供感到困惑,或者更准确地说,如何使用它? class RegistrationFormP
我正在写一个 Django 网站,我正在为一个表单编写我自己的验证: class CreateJobOpportunityForm(forms.Form): subject = forms.C
我有这个表格: class CollaboratorForm(forms.Form): user = forms.CharField(label="Username",max_length=1
我有一个表格,有一堆字段,然后我有一个: profile_image=forms.ImageField(required=False) 问题是在 form.is_valid() 检查之后, f
我有一个 django 模型,它有一个 int 字段(null=True,blank=True)。现在,当我收到用户提交的表单时,我会这样分配它: my_model.width= form.clean
我是一名优秀的程序员,十分优秀!