【问题标题】:Passing value from template to django view将值从模板传递到 django 视图
【发布时间】:2018-02-10 12:22:21
【问题描述】:

我有一个显示一些值的模板。现在我希望能够更改该值。所以我有一个值为“容量.容量”的输入字段。用户现在可以在输入字段中更改此值并单击“更改”按钮。 现在我想在我的 django 视图中处理新输入的值。如何将新值传递给我的视图?

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

是否可以将新值添加到 url,或者是否有不同/更好的方法来做到这一点?

<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 %}

【问题讨论】:

  • 或者有没有其他/更好的方法来做到这一点?
  • 与其在 cmets 中提出您的问题,不如 edit 您的帖子并将您的问题放在那里。另外,你知道你错过了一个结束吗?
  • @bdkopen:感谢您的提示。实际答案怎么样?

标签: html django templates


【解决方案1】:

我认为最好使用 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>

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

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

设置url指向视图

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

希望对你有用

【讨论】:

  • 您好,感谢您的回答。我已根据您的建议更新了最初的问题。我的问题是,我现在在这个模板中有两个表单,两个表单都应该重定向到不同的视图。
  • 好的,我已经修改了我的答案。我认为您可以更改表单的操作以指向修改容量值的新视图。
猜你喜欢
  • 2015-07-07
  • 2021-02-03
  • 2020-06-08
  • 2015-09-18
  • 2013-07-29
  • 1970-01-01
  • 2017-04-26
  • 2016-09-28
  • 2020-03-19
相关资源
最近更新 更多