Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中输出CSV没有';我不能自动工作_Python_Django_Oracle_Cx Oracle - Fatal编程技术网

Python 在Django中输出CSV没有';我不能自动工作

Python 在Django中输出CSV没有';我不能自动工作,python,django,oracle,cx-oracle,Python,Django,Oracle,Cx Oracle,所以我尝试用django输出csv文件 问题是当我试着按下导出按钮时,除了用F12->press network打开选项卡外,它什么也没做,当我单击导出时,我在那里看到一些url,然后我单击它(就像我在这里给出的图片)。但是我希望它在我点击导出按钮后自动完成我已经做了我在django文档中喜欢做的事情 代码有什么问题吗?还是我的浏览器有问题?需要帮助吗 下面是代码(HTML和视图) 你的屏幕截图中的下载栏中有一堆“somefile.txt”的实例,它似乎在工作?@IainShelvington

所以我尝试用django输出csv文件

问题是当我试着按下导出按钮时,除了用F12->press network打开选项卡外,它什么也没做,当我单击导出时,我在那里看到一些url,然后我单击它(就像我在这里给出的图片)。但是我希望它在我点击导出按钮后自动完成我已经做了我在django文档中喜欢做的事情

代码有什么问题吗?还是我的浏览器有问题?需要帮助吗

下面是代码(HTML和视图)


你的屏幕截图中的下载栏中有一堆“somefile.txt”的实例,它似乎在工作?@IainShelvington-hmm当我点击F12网络中的链接时,它在工作,在我给出红色矩形的图片中,如果我不触发它,它将不会加载somefile.txt的实例。这有帮助吗@伊恩舍林顿也许。。不是,因为应用它仍然很困惑ajax@IainShelvington不管怎样,我有解决方案,我用window.location在ajax成功函数中编写url,它可以(尽管它类似于硬代码)
  <div class="col-lg-12">
            <div class="form-panel">
              <form action="#" class="form-horizontal style-form" id="form1">
                <div class="form-group">
                  <label class="control-label col-md-3">Campaign Name</label>
                   <div class="col-md-3 col-xs-11">
                    <input id = "campaign_name" type="text" class="form-control form-width">
                  </div>
                </div>
                <div class="form-group">
                 <label class="control-label col-md-3">Campaign Type</label>
                  <div class="col-md-3 col-xs-11">
                   <div class="btn-group">
                     <select id = "campaigntype"  style="width:425px;background-color:white;height:30px;font-color:red;text-align-last:center;">   
                            <option disabled selected value>-- Choose --</option>                      
                            <!-- <li><a href="#"></a></li> -->                            
                            <option value = "Informasi" >Informasi</option>                                                  
                            <option value = "Promosi" >Promosi</option>                                                  
                            <!-- <li><a href="#">Dropdown link</a></li> -->                            
                            </select>    
                   </div>
                  </div>
                </div>
                <div class="form-group">
                 <label class="control-label col-md-3">Segment</label>
                  <div class="col-md-3 col-xs-11">
                   <div class="btn-group">
                     <select id = "segment_list_name"  style="width:425px;background-color:white;height:30px;font-color:red;text-align-last:center;">   
                            <option disabled selected value>-- Choose --</option>                      
                            <!-- <li><a href="#"></a></li> -->
                            {% for x in segmentname %}
                                    <option value = "{{x}}" >{{ x }}</option>
                            {% endfor %}                          
                            <!-- <li><a href="#">Dropdown link</a></li> -->                          
                            </select>                         
                   </div>
                  </div>
                </div>
                <div class="form-group">
                  <label class="control-label col-md-3">Channel</label>
                  <div class="col-md-4">
                    <div class="input-group bootstrap-timepicker">
                      <div class="btn-group">
                         <select id="channeltype" style="width:425px;background-color:white;height:30px;font-color:red;text-align-last:center;">   
                            <option disabled selected value>-- Choose --</option>                      
                            <!-- <li><a href="#"></a></li> -->
                            {% for y in channel %}
                                    <option value = "{{y}}" >{{ y }}</option>
                            {% endfor %}                          
                            <!-- <li><a href="#">Dropdown link</a></li> -->                          
                            </select>       
                      </div>
                    </div>
                  </div>
                </div>
                <div class="form-group">
                  <label class="control-label col-md-3">Product</label>
                  <div class="col-md-4">
                    <div class="input-group bootstrap-timepicker">
                      <div class="btn-group">
                         <select id="producttype" style="width:425px;background-color:white;height:30px;font-color:red;text-align-last:center;">   
                            <option disabled selected value>-- Choose --</option>                      
                            <!-- <li><a href="#"></a></li> -->
                            {% for z in product %}
                                    <option value = "{{z}}" >{{ z }}</option>
                            {% endfor %}                          
                            <!-- <li><a href="#">Dropdown link</a></li> -->                            
                            </select>       
                      </div>
                    </div>
                    <br>
                    <div id="rowselect">                       
                    </div>
                  </div>
                  <div class="col-md-1">
                        <button type="button" id="countbutton" class="btn btn-info" onclick="return button()">Count</button>
                  </div>
                </div>
                <div class="form-group">
                  <label class="control-label col-md-3">Order By</label>
                  <div class="col-md-4">
                    <div class="input-group bootstrap-timepicker">
                      <div class="btn-group">
                        <select id="columnsegment" style="width:425px;background-color:white;height:30px;font-color:red;text-align-last:center;">                               
                        </select>      
                      </div>
                    </div>
                    <br>
                    <div id="sortby">
                        <input type="radio" name="order" value="asc" checked> Ascending
                        <input type="radio" name="order" value="desc"> Descending
                    </div>
                  </div>
                  </div>
                <div class="form-group">
                  <label class="control-label col-md-3">Max Row</label>
                   <div class="col-md-3 col-xs-11">
                    <input id="maxrow" type="number" min="1" class="form-control form-width">
                  </div>
                </div>
                <div class="form-group">
                  <label class="control-label col-md-3">Output File</label>
                   <div id="outputfile" class="col-md-3 col-xs-11">
                        <input type="radio" name="output" value="csv" checked> csv
                        <input type="radio" name="output" value="txt"> txt
                  </div>
                </div>
                <div class="form-group">
                 <label class="control-label col-md-3">Description</label>
                  <div class="col-md-3 col-xs-11">
                   <textarea id="desc" name="desc" class="form-control form-width" maxlength="150"></textarea>
                  </div>
                </div>
              </form>
            </div>
            <!-- /form-panel -->
          </div>
          <!-- /col-lg-12 -->
        </div>
        <button id="export" class="btn btn-theme03" onclick="return button()">Export</button>
<script>
      $(document).ready(function() {
      $("#export").click(function () {
          var urls = "{% url 'polls:export' %}";
          var camp_name = $('#campaign_name').val();        
          var seg_name = $('#segment_list_name').val();         
          var col_seg = $('#columnsegment').val();
          var sortby = $('#sortby').val();
          var maxrow = $('#maxrow').val();
          var outfile = $('#outputfile').val();          
          var path_upload = $('#flup').val();


      data = {
        'camp_name' : camp_name,                
        'seg_name' : seg_name,        
        'col_seg' : col_seg,
        'sortby' : sortby,
        'maxrow' : maxrow,
        'outfile' : outfile,        
        'path_upload' : path_upload,        
      };

        $.ajax({                     
          url: urls,
          data: data,
          success: function(data) {   
            return(data);
          },
          error: function(data)
          {

          }
        });
      });
      });
  </script>


from django.template import loader
from django.http import HttpResponse, HttpResponseRedirect

def export_script(request):
    campaign_name = request.GET.get('camp_name')
    segment_name = request.GET.get('seg_name')
    column_segment = request.GET.get('col_seg')
    sort_by = request.GET.get('sortby')
    max_row = request.GET.get('maxrow')
    out_file = request.GET.get('outfile')
    path_upload = request.GET.get('path_upload')

    import cx_Oracle
    dsn_tns = cx_Oracle.makedsn('', '', sid='') 
    conn = cx_Oracle.connect(user=r'', password='', dsn=dsn_tns)    
    c = conn.cursor() 
    curr = conn.cursor()
    c.execute("select script from arman_segment_dimension where segment_name = '"+segment_name+"'")
    c.rowfactory = makeDictFactory(c)
    columnalldata = []

    for rowDict in c:
        columnalldata.append(rowDict['SCRIPT'])

    import re

    queryscript = columnalldata[0]
    query_con = queryscript + " order by " + column_segment + sort_by + " fetch next " + max_row + " rows only"

    upr = queryscript.upper()   
    splitter = upr.split()
    comparison = splitter[-2]
    filtering = re.search('SELECT (.*) FROM', upr)   

    if comparison == "FROM":
        filtering2 = re.search('FROM (.*)', upr)
    else:
        filtering2 = re.search('FROM (.*) WHERE', upr)

    table_name = filtering2.group(1)
    result = filtering.group(1)
    data_names = result.split(',')

    import cx_Oracle
    dsn_tns = cx_Oracle.makedsn('', '', sid='') 
    conn = cx_Oracle.connect(user=r'', password='', dsn=dsn_tns) 
    c = conn.cursor() 
    c.execute(query_con)

    c.rowfactory = makeDictFactory(c)
    columnalldata = []

    response = HttpResponse(content_type='text/plain')
    response['Content-Disposition'] = 'attachment; filename="somefile.txt"'
    writer = csv.writer(response)
    if result == "*":
        connection = conn.cursor()
        connection.execute("select column_name from all_tab_cols where table_name = '"+table_name+"'")
        connection.rowfactory = makeDictFactory(connection)
        columnallname = []

        for rowDict in connection:
            columnallname.append(rowDict['COLUMN_NAME'])            
            writer.writerow(rowDict[name] for name in columnallname)

        for row in c:
            columnalldata.append([row[data_name] for data_name in columnallname])
            writer.writerow([row[data_name] for data_name in columnallname])
    else:        
        writer.writerow(data_names)

        for row in c:
            columnalldata.append([row[data_name] for data_name in data_names]) 
            writer.writerow([row[data_name] for data_name in data_names])                                       

    return  response