3

XlsxWriter を使用してデータを書き出す Python 関数を呼び出して、Django アプリで Ajax を介して優れたものにしています。jQuery を使用して、ボタンの 1 つの onclick メソッドをバインドし、この関数を呼び出しました。ただし、呼び出すと、Django から「exportHistoExcel が定義されていません」というエラーが表示されます。同じスクリプト内の他のすべての関数が認識されて実行されているため、これは私を混乱させますが、その 1 つの関数は何らかの理由で定義されていません。誰か助けてくれませんか?

これが私のpythonスクリプトです:

from xlsxwriter.workbook import Workbook

def exportHistoExcel(SE_filelocation, VTfile_location, filename):

    print('anything?')
    #new getFiringRates return statement:
    #    if generating_excel_file: return [bins, spikeanglebins, headanglebins, times, firingrates]
    #   else: return True
    #new getFiringRates parameter:
    #   generating_excel_file = False

    data = getFiringRates(SE_filelocation, VTfile_location, generating_excel_file = True)
    print(data)

    workbook = Workbook(filename)
    worksheet = workbook.add_worksheet()
    worksheet.write('A1', 'Bin (degrees)')
    worksheet.write('B1', '# of Spikes')
    worksheet.write('C1', '# of Samples')
    worksheet.write('D1', 'Time (sec)')
    worksheet.write('E1', 'Firing Rate')

    worksheet.write_column('A2', data[0])
    worksheet.write_column('B2', data[1])
    worksheet.write_column('C2', data[2])
    worksheet.write_column('D2', data[3])
    worksheet.write_column('E2', data[4])
    worksheet.write('A62', 360); worksheet.write('B62', '=$B$2')
    worksheet.write('C62', '=$C$2'); worksheet.write('D62', '=$D$2');   worksheet.write('E62', '=$E$2')


    histo = workbook.add_chart({'type': 'line'})
    histo.set_title({'name': 'Firing Rates'})
    histo.set_x_axis({'name': 'Bin (degrees)'})
    histo.set_y_axis({'name': 'Firing rate (sec^-1)'})
    histo.add_series({'values': '=Sheet1!$E$2:$E$61',
                      'line': {'color': 'black'},
                     'categories': '=Sheet1!$A$2:$A$61'})
    histo.set_legend({'delete_series': [0]})
    worksheet.insert_chart('F2', histo)


    workbook.close()

そして、ここに私の ajax.py ファイルがあります:

from django.utils import simplejson
from dajaxice.decorators import dajaxice_register
from hipercic.apps.NeuroCiC import models
from django.core.files import storage
import file_analysis
import sys

@dajaxice_register
def export_excel_file(request, id):
  print 'TRIAL ID', id

  try:
    trial = models.Trial.objects.get(pk=id)
  except:
    'Could not find trial.'
  else:
    print 'Found Trial'
    print('~/hipercic/apps/NeuroCiC/uploads/' + trial.spikes_file.url)
    SE_loc = '~/hipercic/apps/NeuroCiC/uploads/' + trial.spikes_file.url
    VT_loc = '~/hipercic/apps/NeuroCiC/uploads/' + trial.led_file.url
    print(SE_loc)
    print(VT_loc)
    exportHistoExcel(SE_loc, VT_loc, "demo.xlsx")
    return

ajax の print ステートメントはすべて端末に出力されますが、exportHitoExcel のすべてのステートメントはそうではありません。私のpython関数を認識しないのはなぜですか?

4

1 に答える 1

1

を変更したらうまくいきました

exportHistoExcel(SE_loc, VT_loc, "demo.xlsx")

これに行:

return simplejson.dumps({'scatter_data': file_analysis.exportHistoExcel("test.xlsx") })
于 2013-07-01T15:22:43.677 に答える