Django表单在单个HTML中多次使用,避免重复的id
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django表单在单个HTML中多次使用,避免重复的id相关的知识,希望对你有一定的参考价值。
Python 3.6.3,Django 1.11.8,Chrome版本63.0.3239.108(官方版本)(64位)
我有一个创建项目表单。在html代码中添加了多个模态。
我在表单类中使用了prefix属性,这可以避免来自其他表单相同名称字段的重复ID。
但是如何处理由单个html中多次使用的一个表单创建的同名多个ID?
form.朋友
class CreateProjectForm(forms.ModelForm):
prefix = 'create_project'
class Meta:
model = Project
fields = ['project_name', 'project_type', 'description']
widgets = {'description': forms.TextInput(attrs={'placeholder': 'description'})}
我的表格工作正常。但我一直在Chrome Developer控制台中收到此错误:
[DOM] Found 2 elements with non-unique id #id_create_project-description: <input type="text" name="create_project-description" placeholder="description" maxlength="200" id="id_create_project-description"> <input type="text" name="create_project-description" placeholder="description" maxlength="200" id="id_create_project-description">
(index):1 [DOM] Found 2 elements with non-unique id #id_create_project-project_name: <input type="text" name="create_project-project_name" maxlength="50" required id="id_create_project-project_name"> <input type="text" name="create_project-project_name" maxlength="50" required id="id_create_project-project_name">
(index):1 [DOM] Found 2 elements with non-unique id #id_create_project-project_type: <select name="create_project-project_type" required id="id_create_project-project_type">…</select> <select name="create_project-project_type" required id="id_create_project-project_type">…</select>
答案
您有两种选择:
- 在视图中创建单独的表单实例,每个实例都有不同的prefix:
f1 = CreateProjectForm(prefix='f1') f2 = CreateProjectForm(prefix='f2')
然后单独渲染每个表单 - 前缀将确保它们具有唯一ID。 - 如果由于某种原因你想要使用相同的表单类,或者不知道你将渲染多少个实例,那么你可以render the form manually并省略ID或使用一些外部逻辑来确定ID的前缀。
以上是关于Django表单在单个HTML中多次使用,避免重复的id的主要内容,如果未能解决你的问题,请参考以下文章