我有一张上传图片的表格.
如果我遵循Django的标准来清理表单的特定字段属性,那么这就是我的clean方法通常的样子:
class UploadImagesForm(forms.Form):
image = forms.FileField()
def clean_image(self):
file = self.cleaned_data['image']
if file:
if file._size > 15*1024*1024:
raise forms.ValidationError("Image file is too large ( > 15mb ).")
return file
else:
raise forms.ValidationError("Could not read the uploaded file.")
Run Code Online (Sandbox Code Playgroud)
但是,我正在使用一个允许一次上传多个图像的表单,所有这些都通过相同的小部件(即,用户可以按住Shift并单击以选择文件浏览器上的多个文件).因此,每当我需要访问视图或处理程序中的文件时,我都会使用类似于request.FILES.getlist('images')for循环的东西.我该怎么办这个领域的干净方法?我迷路了.
这是我的表格的样子.
class UploadImagesForm(forms.Form):
images = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': 'multiple'}))
Run Code Online (Sandbox Code Playgroud)
我想要字段的干净方法来检查提交的每个文件的文件大小,如上面第一段代码所示.
我创建了一个 CBV,我想根据用户删除其中的一个或多个字段。这个想法是一个工作场所,如果登录用户是招聘人员,employer则应包括该字段,否则应排除该字段。
表格.py
class JobCreationForm(forms.ModelForm):
class Meta:
model = Job
# exclude = ['posted', 'provider', 'ext_id']
fields = ('title',
'job_desc',
'agency_name',
'employer',
'contact_name',
)
Run Code Online (Sandbox Code Playgroud)
视图.py
class JobCreateView(LoginRequiredMixin, CreateView):
template_name = 'job/job.html'
form_class = JobCreationForm
success_url = '/'
def get_context_data(self, **kwargs):
context = super(JobCreateView, self).get_context_data(**kwargs)
# import the Customers of this Company
self.fields["agency_name"].remove()
recruiter = self.request.user
self.fields["contact_name"].queryset = Profile.objects.filter(user_id = self.request.user)
# if the user is a recruiter, delete the employer field.
if Company.objects.filter(user_id = self.request.user).values('is_recruiter') == False:
pass …Run Code Online (Sandbox Code Playgroud) 我正在研究Symfony 3,我的表格有些问题.
当我创建一个不需要字段的Symfony表单时,这是我的代码:
我创建了表单:
$form = $this->createFormBuilder()
->add('prenom' TextType::class, array(
'label' => 'Votre prénom',
'required' => false
)
->getForm();
Run Code Online (Sandbox Code Playgroud)
以下是我对此字段的视图中的代码:
{{ form_label(form.prenom) }}
{{ form_errors(form.prenom) }}
{{ form_widget(form.prenom) }}
Run Code Online (Sandbox Code Playgroud)
这是我的HTML:
<label class="control-label" for="contact_prenom">Votre prénom</label>
<input type="text" id="contact_prenom" name="contact[prenom]" class="form-control"/>
Run Code Online (Sandbox Code Playgroud)
现在如果我没有'require' => false在我的FormBuilder上做同样的事情,这里是我得到的HTML:
<label class="control-label required" for="contact_prenom">Votre prénom</label>
<sup class="required" title="Champ obligatoire">
<i class="fa fa-asterisk"></i>
</sup>
<input type="text" id="contact_prenom" name="contact[prenom]" required="required" class="form-control" />
Run Code Online (Sandbox Code Playgroud)
是否可以控制"sup"标签,以便星号*可以与我的标签一起使用?
我想我可以用jQuery来做,但是我想知道是否可以在我的表单构建器或Twig中执行它?
我已添加了Shopify文档中描述的基本联系表单.
我的代码:
{% form 'contact' %}
{% if form.posted_successfully? %}
<div class="successForm feedback">
<p>Thanks for contacting us. We'll get back to you as soon as possible.</p>
</div>
{% endif %}
{% if form.errors %}
<div class="errorForm feedback">
<p>Sorry, we were unable to submit your inquiry because it contained {{ form.errors | size | pluralize: 'an error', 'a few errors' }}.<br/>Please correct the following and submit again:</p>
{% for field in form.errors %}
<p><strong>The {{ field | capitalize | …Run Code Online (Sandbox Code Playgroud) form-fields ×4
django ×2
forms ×2
python ×2
contact-form ×1
django-forms ×1
form-data ×1
required ×1
shopify ×1
symfony ×1