将值从模板传递到django视图

时间:2017-09-01 12:19:34

标签: html django templates

我有一个模板,其中显示了一些值。现在我希望能够改变这些价值观。所以我有一个输入字段,其值为“capacity.capacity”。用户现在可以在输入字段中更改此值,然后单击“更改”按钮。 现在我想在我的django视图中处理新输入的值。如何将新值传递给我的视图?

我尝试在网址中添加该值,以便我可以在我的视图中再次检索它。

是否可以将新值添加到网址中,或者是否有不同/更好的方法来执行此操作?

<td> 
    <input type="number" name=new_capacity id="new_capacity" step="1" value= {{ capacity.capacity }}> 
    <button> 
        <span class="glyphicon glyphicon-edit"></span>
        <a href="{% url 'change_capacity' item_id=capacity.pk new_capa=NEWVALUE %}"> Change
    </button> 
</td>

更新:完整代码

我在这个模板中有两个表单和两个提交按钮。两个按钮都应重定向到不同的视图。但是,似乎始终会调用相同的视图。

{% block body %}

<form action="/producer/capacity/" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Hinzufügen" />
</form>
<br/>
<br/>

<div class="container">
    <table class="table">
        <thead>
              <tr>
                <th>Maschine</th>
                <th>Verfügbare Kapazität</th>
              </tr>
            </thead>
            <tbody>
               {% for capacity in capacity_list %}
                    <tr>
                      <td>{{ capacity.pk }}</td>
                      <td>
                          <form action="" method="post">{% csrf_token %}
                          <input type="number" name=new_capacity id="new_capacity" step="1" value="{{capacity.capacity}}" />
                          <input type="submit" value="Change"/>
                          </form>
                      </td>
                    </tr>
              {% endfor %}
            </tbody>
    </table>
</div>

{% endblock %}

1 个答案:

答案 0 :(得分:0)

我认为最好使用POST方法在模型数据中进行更改,而不是使用GET,因此您可以在模板中编写这样的表单:

<form action="{% url my_app.views.my_capacity_view %}" method="post">{% csrf_token %}
    <input type="number" name=new_capacity id="new_capacity" step="1" value="{{capacity.capacity}}" />
    <input type="submit" value="Change" />
</form>

您可以设置操作表单网址,以便将字段发送到自定义视图以修改容量值。然后,在视图中,您可以获取值并进行更改,例如:

def my_capacity_view(request):
    if request.method == 'POST':        
        new_capacity = request.POST.get('new_capacity ', '')
        # set new value 'new_capacity' to the object

将网址设置为指向视图

(r'^newcapacity', 'my_app.views.my_capacity_view'),

我希望这很有用