【问题标题】:pass value for two different submit buttons in same form methods in Django在Django中以相同的表单方法为两个不同的提交按钮传递值
【发布时间】:2021-11-22 12:15:50
【问题描述】:

让我们将我的 template.html 视为

    <form class="form-horizontal" id="adhoc-form" method="post" action="{% url 'contacts:add_item' item.id %}">
    
        {% csrf_token %}
    
        <fieldset>
            <div class="control-group">
                <label for="id_item_filename" class="control-label">Items
                <span class="text-error">*</span></label>
                <div class="controls">
                    <select placeholder="Item filename" name="item" id="id_item_filename" class="span3" required="required">
                        <option value="">---------</option>
                        {% for i in items %}
                             <option value="{{i.0}}">{{i.1}}</option>
                        {% endfor %}
                    </select>
                </div>
           </div>
        </fieldset>
        <div id="form-buttons-container" class="form-actions" style="padding-left: 0px;">
           <div class="controls">
           <input type="hidden" class="btn btn-primary btn-medium" id= 'i_id' name='i_id' value="{{data.0.id}}">
           <input type="submit" class="btn btn-primary btn-medium" value="Submit">
           <input type="submit" class="btn btn-primary btn-medium" value="Delete">
           </div>
        </div>

 </form>

我的 url.py 是

url(r'^stock/item/add/item_name/(?P<id>\d+)/$', login_required(UpdateBarcode.as_view()), name="add_item"),

我的views.py是

class UpdateItem(View):
    def post(self, request, id):
       item_id = request.POST.get('item')
       items = Items.objects.get(id=item_id)
       try:
          JobItems.objects.filter(id=id).update(item_name=items.name)
       except:
           messages.error(request, 'Cannot update')
       return redirect(reverse("contacts:item_list"))

点击提交按钮时,我们需要更新项目,我们点击删除按钮项目应该被删除。请帮助我如何在同一个视图中同时进行提交和删除操作

【问题讨论】:

    标签: python django django-models django-views django-templates


    【解决方案1】:

    您可以开始更新您的 HTML 以提供按钮 name 字段:

       <input type="submit" class="btn btn-primary btn-medium" name="update-item" value="Submit">
       <input type="submit" class="btn btn-primary btn-medium" name="delete-item" value="Delete">
    

    现在您可以检查触发了哪个按钮。 (update-itemdelete-item):

    def post(self, request, id):
        item_id = request.POST.get("item")
        items = Items.objects.get(id=item_id)
        if "update-item" in request.POST:
            try:
                JobItems.objects.filter(id=id).update(item_name=items.name)
            except:
                messages.error(request, "Cannot update")
        elif "delete-item" in request.POST:
            JobItems.objects.get(id=id).delete()
        return redirect(reverse("contacts:item_list"))
    

    请注意,我不知道您的项目删除操作逻辑,因此您可以在此处更新。

    【讨论】:

      猜你喜欢
      • 2014-12-03
      • 2012-02-21
      • 2013-08-31
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多