Django表单在单个HTML中多次使用,避免重复的id

问题描述 投票:0回答:1

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>​

enter image description here

python django google-chrome django-forms django-templates
1个回答
1
投票

您有两种选择:

  1. 在视图中创建单独的表单实例,每个实例都有不同的prefixf1 = CreateProjectForm(prefix='f1') f2 = CreateProjectForm(prefix='f2') 然后单独渲染每个表单 - 前缀将确保它们具有唯一ID。
  2. 如果由于某种原因你想要使用相同的表单类,或者不知道你将渲染多少个实例,那么你可以render the form manually并省略ID或使用一些外部逻辑来确定ID的前缀。
© www.soinside.com 2019 - 2024. All rights reserved.