2017-09-01 13 views
0

ハイチャートをPythonスクリプトからDjangoに転送する方法を学びたいと思っています。私はそこに行くためにthis solution threadを使用してきました(しかし、これまで無駄でした)。PythonのスクリプトオブジェクトをDjangoのviews.pyに渡す

script.pyという名前のPythonスクリプトがあり、chart_dataというオブジェクトが返されています。 Djangoでは、views.pyのscript.pyファイルを実行するには、chart_dataオブジェクトを取得し、それを 'data'という新しいオブジェクトに割り当てます。

私のscript.pyファイルは、自分のプロジェクトルートディレクトリの/ scripts /というディレクトリに保存されており、独自の__init__.pyファイルを含んでいます。

以下のコードでは、グローバル名 'chart_data'が定義されていないというエラーがサーバーから返されます。

私がここで間違っていることについての説明は非常に高く評価されます。

### views.py 

from __future__ import unicode_literals 
import datetime 
import subprocess 
import scripts 

def plot(request, chartID = 'chart_ID', chart_type = 'line', chart_height = 500): 

    raw = subprocess.Popen('~/scripts/script.py', shell=True) 

    data = chart_data 

    chart = {"renderTo": chartID, "type": chart_type, "height": chart_height,} 
    title = {"text": 'my title here'} 
    xAxis = {"title": {"text": 'xAxis name here'}, "categories": data['Freq_MHz']} 
    yAxis = {"title": {"text": 'yAxis name here'}} 
    series = [ 
    {"name": 'series name here', "data": data['series name here']}, 
    ] 

    return render(request, '/chart.html', {'chartID': chartID, 'chart': chart, 
               'series': series, 'title': title, 
               'xAxis': xAxis, 'yAxis': yAxis}) 

答えて

1

はい、chart_dataはこのコードのどこにも定義されていません。

あなたは外部プロセスとしてスクリプトを実行していると思われ、Djangoが定義する変数についてDjangoが何とか知っていることを期待しています。それはまったくどのように動作するのではありません。

Popenでスクリプトを呼び出すのではなく、にインポートすると、使用する他のPythonモジュールと同じようになります。次に、関数のいずれかを呼び出して、戻り値を好きなものに割り当てることができます。

0

使用しているDjangoアプリケーション内のスクリプトを入れて、それをインポートします。

from my_app.chart_data import chart_data 
関連する問題