gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:22:22 25 4
gpt4 key购买 nike

Python 3.6.3, Django 1.11.8, Chrome Version 63.0.3239.108 (Official Build) (64-bit)

我有一个创建项目表单。这是在 html 代码中添加了多个模态。

我在表单类中使用了 prefix 属性,这样可以避免其他表单同名字段的重复 ID。

但是如何处理一个表单创建的同名多个ID在单个html中多次使用的情况?

表单.py

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 开发者控制台中不断收到此错误:

[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

最佳答案

您有两个选择:

  1. 在您的 View 中创建单独的表单实例,每个实例都有不同的 prefix :

    f1 = CreateProjectForm(prefix='f1')
    f2 = CreateProjectForm(prefix='f2')

    然后分别渲染每个表单 - 前缀将确保它们具有唯一的 ID。

  2. 如果由于某种原因您想使用相同的表单类,或者不知道要渲染多少个实例,那么您可以 render the form manually并忽略 ID 或使用一些外部逻辑来确定 ID 的前缀。

关于python - Django 表单在单个 HTML 中多次使用并避免重复的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47842856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com