Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 提交通过javascript添加到请求对象的字段_Jquery_Django_Django Forms - Fatal编程技术网

Jquery 提交通过javascript添加到请求对象的字段

Jquery 提交通过javascript添加到请求对象的字段,jquery,django,django-forms,Jquery,Django,Django Forms,我试图做的是,当用户单击span中包含的图标时,我通过javascript添加一个author字段。但问题是,提交表单时通过javascript添加的字段既不能在表单对象中获得,也不能在request.POST对象中获得。 我主要有两个问题: 我希望能够将通过javascript添加的字段中的值传递给服务器,并能够在views.py中访问这些值 我还想知道是否有更整洁的方法 views.py def addbook(request): if request.method=='POST':

我试图做的是,当用户单击span中包含的图标时,我通过javascript添加一个author字段。但问题是,提交表单时通过javascript添加的字段既不能在表单对象中获得,也不能在request.POST对象中获得。 我主要有两个问题:

  • 我希望能够将通过javascript添加的字段中的值传递给服务器,并能够在views.py中访问这些值
  • 我还想知道是否有更整洁的方法
  • views.py

    def addbook(request):
        if request.method=='POST':
            print(request.POST)
            form=BookForm(request.POST)
            # process accordingly.
        else:
            form = BookForm()
            return render(request,'book.html',{'form':form})
    
    forms.py

    class BookForm(forms.Form):
        author_name=forms.CharField(max_length=20)
    
    book.html

    <form action='' method="POST">
        <div id='authorfield'>{{ form.author_name }}</div>
        <a href='#'><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></a>
    </form>
    
    
    {{form.author_name}
    
    book.js

    $('span').click( function(e) {
        e.preventDefault();
        $("#authorfield").after(" <div><input type='text' class='form-control' placeholder='Author name'></div>");
    
    });
    
    $('span')。单击(函数(e){
    e、 预防默认值();
    $(“#authorfield”)。在(“”)之后;
    });
    
    您需要在JS添加的
    输入
    元素中有一个
    名称
    属性


    然而,我不确定这是否会满足你的要求;您已经有一个author\u name字段,因此不清楚为什么要添加另一个。

    我希望能够根据用户的需要为author\u name添加尽可能多的字段(可能也有多个作者),并且添加名称字段也是一个问题,因为名称必须是唯一的,用户添加的两个字段将具有相同的名称。另外,如果我添加了name属性,那么我是否能够在views.py中访问它?听起来你真的在寻找。“我希望能够根据用户的需要为author_name创建尽可能多的字段(也可能有多个author)”=>那么你的模型是错误的-你应该有一个
    作者
    模型和一个与
    书籍
    @brunodesshuilliers的多对多关系我的作者字段已经是多对多字段了,但是如果我在我的表单中使用该字段作为模型表单,那么我会得到一个向下滚动的列表来选择已经插入的作者..我希望用户能够输入作者列表…无论如何,我用其他方法解决了这个问题。