如何使用复选框django触发功能

时间:2016-10-06 05:30:23

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

我想知道如何运行某些功能,具体取决于所选的复选框。这是我的可视化模板:Template

这是我的模板代码,名为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)

1 个答案:

答案 0 :(得分:2)

您可以使用request.POST.getlist('mycheckboxname')接收所选复选框的列表,您应该将所选复选框namevalue设置为相应的字段(例如,#Aged&#39;):

<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 

编辑(根据您的意见):

这就是django的工作方式:您的客户端发送请求并返回响应。这称为HTTP协议。单击IMPORT按钮时,客户端会发送一个表单,其中包含用户输入服务器的所有数据。此数据在您的视图中显示为request object的一部分。您可以检索此数据,您可以使用此数据执行所需操作。例如,在我的示例中,process_values可以选择所有&#39; Phyllis报告&#39;对象并将它们作为呈现模板的一部分返回到响应。没有其他方法可以做到这一点。你无法在没有请求的情况下从服务器上调用click功能。要完成你想要的,你可以尝试拆分逻辑并将其中的一部分放到javascript中。您可以将onclick监听器绑定到您的按钮,然后通过ajax将请求发送到服务器。但这是一个全新的故事。 这可能很有用:ajax and django