我创建了一个页面,用户可以在其中下订单。所以他们可以填写一些字段,如描述、注释等,包括“语言”,这是formset
的一个字段。
所以在我的 View
中,有一个包含几乎所有字段的job_creation_form
,然后有一个由Language组成的
表格。Formset
我想使用 JQuery validate
插件来验证字段而不刷新页面。问题是我可以在 HTML
中看到一个 form
标签,它没有任何 id
。如何设置id
?
def create_order(request):
LanguageLevelFormSet = formset_factory(LanguageLevelForm, extra=5, max_num=5)
language_level_formset = LanguageLevelFormSet(request.POST or None)
job_creation_form = JobCreationForm(request.POST or None, request.FILES or None)
context = {'job_creation_form': job_creation_form,
'formset': language_level_formset}
if request.method == 'POST':
if job_creation_form.is_valid() and language_level_formset.is_valid():
cleaned_data_job_creation_form = job_creation_form.cleaned_data
cleaned_data_language_level_formset = language_level_formset.cleaned_data
for language_level_form in [d for d in cleaned_data_language_level_formset if d]:
language = language_level_form['language']
level = language_level_form['level']
job = Job(
customer=request.user,
text_to_translate=cleaned_data_job_creation_form['text_to_translate'],
file=cleaned_data_job_creation_form['file'],
short_description=cleaned_data_job_creation_form['short_description'],
notes=cleaned_data_job_creation_form['notes'],
language_from=cleaned_data_job_creation_form['language_from'],
language_to=language,
level=level,
)
job.save()
return HttpResponseRedirect('/order-success')
else:
print job_creation_form.errors
print language_level_formset.errors
return render(request, 'auth/jobs/create-job.html', context=context)
return render(request, 'auth/jobs/create-job.html', context=context)
最佳答案
在 Django 中 django.forms.Form
仅处理表单的内部(即字段、验证、保存)部分,而不处理与提交相关的任何细节(提交按钮、操作、方法)。
这就是为什么当您在模板中呈现表单时:
{% extend base.html %}
{% block content %}
<form action='' method='post'>
{{ form }}
</form>
{% endblock %}
如果您愿意,可以在表单上设置一个 id 属性并在模板中访问它,例如 <form ... id='{{ form.id }}'>
,或者只是在表单上输入一个 ID。
关于javascript - 如何在 Django 中为表单设置 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37302076/