【问题标题】:How to trigger a function with checkbox django如何使用复选框 django 触发功能
【发布时间】:2017-02-14 17:42:36
【问题描述】:

我想知道如何根据选中的复选框运行某些功能。这是我的视觉模板:

这是我的模板代码,名为 admin.html:

<div class="panel-body">
    <p><button type="button" class="btn btn-black"><i class="fa fa-upload"  </i>&nbsp;&nbsp;<span class="bold">IMPORT ALL</span></button>  </p>
    <p>  Import selected reports:</p>
    <p>  <label><input type="checkbox" value=""> Cisco Backlog Report</label></p>
    <p>  <label><input type="checkbox" value=""> Planning & Standard</label></p>
    <p>  <label><input type="checkbox" value=""> Emo Trans Report</label></p>
    <p>  <label><input type="checkbox" value=""> Phyllis Report</label></p>
    <p>  <label><input type="checkbox" value=""> Purchase Order View</label></p>
    <p>  <label><input type="checkbox" value=""> On Hand Inventory</label></p>
    <p>  <label><input type="checkbox" value=""> Bill of Material</label></p>
    <p>  <label><input type="checkbox" value=""> Aged</label></p>
    <p>  <label><input type="checkbox" value=""> Shipment with Times</label></p>
    <p><button type="button" class="btn btn-danger">Import</button>  </p>

正如我之前提到的,我有 10 个函数可以读取多个 .csv 报告并将数据上传到模型中,并通过 URL 部分触发它们。在我的views.py中,我将展示两个例子:

def importpurchase(request)
    Log logic here
def importcisco(request) 
    Log logic here
def importall(request) # this function is to import all
    importpurchase(None)
    importcisco(None)

【问题讨论】:

    标签: html django twitter-bootstrap python-2.7 templates


    【解决方案1】:

    您可以使用request.POST.getlist('mycheckboxname') 接收选定复选框的列表,您应该将您的复选框namevalue 对应于选定的字段(例如'Aged'):

    <input type="checkbox" name="mycheckboxname" value="Aged">
    

    然后您可以根据列表中选择的内容调用任何函数:

    def func1(l,vals):
      process_values_in_different_way(l, vals)...
    def func2(l,vals):
     process_values(l, vals)...
    
    def MyView(request):
     values=get_values_from_somewhere()
     mylist=request.POST.getlist('mycheckboxname')
     if 'Aged' in mylist:
        func2(mylist, values)
     elif anotherValue in mylist:
        func2(mylist, values)
     elif...
        etc 
    

    编辑(在您的 cmets 上):

    这就是 django 的工作方式:您的客户端发送请求,您返回响应。这称为 HTTP 协议。单击导入按钮时,您的客户端将包含用户输入的所有数据的表单发送到服务器。此数据在您的视图中显示为request object 的一部分。您可以检索此数据,并且可以使用此数据做任何您想做的事情。例如,在我的示例中,process_values 可以选择所有“Phyllis Report”对象并将它们返回给响应,作为渲染模板的一部分。没有其他方法可以做到这一点。您不能在没有请求的情况下从服务器调用点击功能。为了完成你想要的,你可以尝试拆分你的逻辑并将其中的一部分放到 javascript 中。您将能够将 onclick 侦听器绑定到您的按钮,然后通过 ajax 将请求发送到服务器。但这是一个全新的故事。 这可能有用:ajax and django

    【讨论】:

    • 我想我明白了,但是这个呢: def func1(l,vals): process_values_in_different_way(l, vals)... def func2(l,vals): process_values(l, vals) ...你能更详细一点吗?
    • 是的,我马上修改答案
    • 还有一件事,IMPORT按钮呢,一旦被点击它应该触发复选框上选择的功能
    • 好吧,所以在“值”中我应该列出清单的所有名称或我的功能?
    • 您应该在值中列出清单的所有名称,就像在您的图片上一样,并且鉴于您根据已选择的值调用您的函数。如果你调用的物料清单和老化值与它们相关,我不知道如何更好地解释它
    猜你喜欢
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2012-03-24
    • 2017-11-09
    • 2018-06-05
    • 1970-01-01
    相关资源
    最近更新 更多