使用JavaScript在Django中动态呈现表单

使用JavaScript在Django中动态呈现表单,javascript,jquery,django,django-forms,Javascript,Jquery,Django,Django Forms,所以我是Django的新手,也是JavaScript的新手。我试图创建一个视图,使用JavaScript动态呈现多个表单。下面是我创建的两个表单 class CreateTestForm(forms.ModelForm): class Meta: model = Test fields = ['name', 'test_group', 'description', 'query_text', 'failure_condition', 'status'] def getKey(s

所以我是Django的新手,也是JavaScript的新手。我试图创建一个视图,使用JavaScript动态呈现多个表单。下面是我创建的两个表单

class CreateTestForm(forms.ModelForm):
class Meta:
    model = Test
    fields = ['name', 'test_group', 'description', 'query_text', 'failure_condition', 'status']

def getKey(self):
    return "create_test_form"

class VC1Form(CreateTestForm):
expected_relation = forms.ChoiceField(choices = [('<','<'), ('>','>'), ('=','='), ('<=','<='), ('>=','>='), ('!=','!=')], required = True, label = 'Expected Relation: ')
num_rows = forms.IntegerField()

def getKey(self):
    return "vc1_form"
和模板:

<form action="/tests/create/" method="post">
{% csrf_token %}

{{create_test_form.as_ul}} <br><br>

<select id="validation_classes_id" name="all_validation_classes" onchange="showForm()">
    <option value="%">Choose the validation class</option>
    {% for val_class in all_validation_classes %}
     <option value="{{ val_class.id }}">{{ val_class.id}}  {{val_class.name }}</option>
    {% endfor %}
</select>
<br><br>


<script>
    function showForm(){
        var x = document.getElementById("validation_class_id").value;
    }
</script>
<input type="submit" value="Submit" />

{%csrf_令牌%}
{{create_test_form.as_ul}

选择验证类 {val_类在所有_验证_类%} {{val_class.id}{{val_class.name} {%endfor%}

函数showForm(){ var x=document.getElementById(“验证类id”).value; }

我试图得出这样一个结论,当用户从下拉列表(validation\u classes\u id)中选择某个内容时,视图将呈现与该选择对应的表单。我目前只在这里添加了一个表单VC1Form,但我在下拉列表中针对每个选项编写了不同的表单。 我尝试了一些事情,但没有任何效果,任何帮助都将不胜感激

试试这个:

document.getElementById('form').querySelectorAll(“label”).forEach(e=>
{e.prepend(document.createElement(“br”);});
更好的办法是:

<form id="form" action="login_view" method="post">
    {% csrf_token %}
    <table>
    {{ form }}
  </table>
    <input type="submit" value="register">

{%csrf_令牌%}
{{form}}
尝试以下方法:

document.getElementById('form').querySelectorAll(“label”).forEach(e=>
{e.prepend(document.createElement(“br”);});
更好的办法是:

<form id="form" action="login_view" method="post">
    {% csrf_token %}
    <table>
    {{ form }}
  </table>
    <input type="submit" value="register">

{%csrf_令牌%}
{{form}}

当您想多次动态显示同一表单时,您会使用Dot Formset work only吗?当您想多次动态显示同一表单时,您会使用Dot Formset work only吗?