【问题标题】:Submit fields added through javascript to the request object将通过javascript添加的字段提交到请求对象
【发布时间】:2016-01-06 14:45:48
【问题描述】:

我想要做的是,当用户单击跨度中包含的图标时,我正在通过 javascript 添加作者字段。但问题是提交表单时通过javascript添加的字段既不是在表单对象中获取的,也不是在request.POST对象中获取的。 我主要有两个问题:

  1. 我希望能够将通过javascript添加的字段中的值传递给服务器,并能够在views.py中访问它们
  2. 我也想知道是否有更简洁的方法。

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>

book.js

$('span').click( function(e) {
    e.preventDefault();
    $("#authorfield").after(" <div><input type='text' class='form-control' placeholder='Author name'></div>");

});

【问题讨论】:

    标签: jquery django django-forms


    【解决方案1】:

    您需要在由您的 JS 添加的 input 元素中具有 name 属性。

    但是我不确定这会满足你的要求;您已经有一个 author_name 字段,所以不清楚为什么要添加另一个字段。

    【讨论】:

    • 我希望能够为用户提供尽可能多的 author_name 字段(也可能有多个作者)并且添加名称字段也是一个问题,因为名称必须是唯一的并且用户添加的两个字段将具有相同的名称。另外,如果我添加名称属性,那么我可以在views.py 中访问它吗?
    • 听起来你真的在寻找formsets
    • "我希望能够为用户提供尽可能多的 author_name 字段(也可能有多个作者)" => 那么你的模型是错误的 - 你应该有一个 @987654324 @model 以及与Book 的多对多关系。
    • @brunodesthuilliers 我的作者字段已经是多对多字段,但是如果我在表单中使用该字段作为模型表单,那么我会得到一个向下滚动列表来选择已经输入的作者。我想要用户能够输入作者列表...无论如何我以其他方式解决了这个问题。
    猜你喜欢
    • 2017-06-22
    • 2011-01-04
    • 2017-02-24
    • 2011-05-19
    • 1970-01-01
    • 2010-12-17
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多