Javascript 在Django模板中动态生成动态表单

Javascript 在Django模板中动态生成动态表单,javascript,ajax,django,django-forms,Javascript,Ajax,Django,Django Forms,我有一个Django模板(html文件)。它包含一个下拉选择器,有许多选项。选择每个选项时,浏览器上会显示一个预定义表单。每个这样的表单都有一个预定义字段 例如,选择“关于”选项时,表格将为- Name - Age - University - CGPA - 在选择教育方案时,表格将: Name - Age - University - CGPA - 现在,实现此功能的最佳方式是什么 格式1-在选择任何选项时,我向服务器发出Ajax调用,并返回要显示的字段的json 格式

我有一个Django模板(html文件)。它包含一个下拉选择器,有许多选项。选择每个选项时,浏览器上会显示一个预定义表单。每个这样的表单都有一个预定义字段

例如,选择“关于”选项时,表格将为-

Name - 
Age - 
University - 
CGPA - 
在选择教育方案时,表格将:

Name - 
Age - 
University - 
CGPA - 
现在,实现此功能的最佳方式是什么

格式1-在选择任何选项时,我向服务器发出Ajax调用,并返回要显示的字段的json

格式2-我在模板中硬编码了几个表单,并根据所选选项使其可见-为真。(我不相信这一点)

格式3-我在这里寻找的任何新解决方案


谢谢

实现这一点的一个方法是几天前我是如何实现的:

向服务器发送所需表单的ajax调用,然后以HTML表单将from发送回模板

form = Yourform()
form = form.as_p()
return HttpResponse(form)
这将以HTML格式返回表单。现在您需要做的就是用这个新表单替换容器。
希望这有帮助

取决于以后谁来维护它

如果您要在后端查询字段,那么任何想要向表单添加新字段的人都必须访问后端代码并将其插入其中。一般来说,并不是每个人都可以访问它!那个人需要了解Django。此外,使用ajax时,您仍然会发出HTTP请求,尽管是在localhost上,但与硬编码表单相比,这可能会有轻微的延迟

相反,您可能可以尽可能地使用django模板引擎,如模板继承等,以减少代码冗余,并将表单保留在前端本身!这样一来,如果前端人员必须添加新内容,他就可以用HTML来完成

如果表单中有数千个字段,这些字段太多,无法键入或维护,那么可以发出ajax请求。或者,保持在前端工作良好

希望这有帮助


(无论是谁计划对答案进行否决,请务必提及否决的原因)

请注意,因为@akg提到表单可能完全不同,因此处理表单的views.py中的方法必须确定模板中填写的表单类型。因此@akg可以使用简单的if-else条件。我认为这是这里的重要部分我没有对“重要部分”做任何评论,我只是想指出,模板本身的表单无法告诉后端应该使用哪个表单。您必须在
POST
数据中有其他内容来告诉后端。