2016-05-25 8 views
1

5秒ごとにdjangoを使用してデータをHTMLにレンダリングするのが目標ですが、問題はループが機能しないことです。djangoを使ったループでのレンダリング

view.py見て、問題を解決するために助け誰にとって

def form(request): 
try: 
    file_name = request.FILES['files'].name 
    nama = "uploads/" + file_name 
    seq_act, num_obsv, observer, list_obsv = pr.readexcel(nama,0) 
    p, A, B = pr.make_initial(observer,num_obsv) 
    p_lampau, A_lampau, B_lampau = pr.baum_welch(p, A, B, seq_act) 

    while True: 
     if len(temp)==0: 
      break 
     seq_act_test = list(temp) 
     temp[:] = [] 

     real_seq, repair_seq = pr.process(p_lampau, A_lampau, B_lampau, 
              seq_act_test, observer_test, 
              num_obsv) 
     return render(request,'main/form2.html',{'real_seq' : real_seq, 
               'repair_seq': repair_seq}) 
     time.sleep(5) 

except: 
    return redirect('/main/awal') 

<html> 
<head> 
    {% load staticfiles %} 
    <link rel="stylesheet" type="text/css" href="{% static 'main/vis.css' %}" /> 
    <script type="text/javascript" src="{% static 'main/vis.js' %}"></script> 
    <link href="{% static 'main/css/prism.css' %}" rel="stylesheet"> 
    <link href="{% static 'main/css/ghpages-materialize.css' %}" type="text/css" rel="stylesheet" media="screen,projection"> 
    <link href="http://fonts.googleapis.com/css?family=Inconsolata" rel="stylesheet" type="text/css"> 
    <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 
    <style type="text/css"> 
     #mynetwork { 
      width: 100%; 
      height: 600px; 
      border: 1px solid lightgray; 
     } 
    </style> 
</head> 
</html> 
<body> 
    <div> 
    <center> 
     <b> {{ real_seq }}<br> 
     <b>{{ repair_seq }} 
    </center> 
    </div> 
</body> 

form2.htmlありがとう:これはコードです。

+0

あなたは 'return'コールすると、関数が終わって、ループが終了します。 –

+0

あなたがやろうとしていることは、「サーバープッシュ」と呼ばれることもあります。ブラウザが部分ページをレンダリングしている間は、HTTP接続を開いたままにする必要があります。もしあなたが*これを行う必要があるなら、この[古いSO投稿]を見てください(http://stackoverflow.com/questions/4787530/does-django-have-a-way-to-open-a-http-long-poll -接続)。 5秒ごとですので、* browser *がサーバーをポーリングするように変更することをお勧めします。ずっと簡単です。ところで、jQueryプラグイン[taconite](http://jquery.malsup.com/taconite/)をチェックアウトすると、ブラウザとサーバーの間にバックドアの会話ができるようになります。 –

+0

ええ、あなたがしたいことはdjangoのビューとは無関係のようです。 djangoは、ブラウザの動作ではなく、バックエンドのロジックを扱います。 javascriptとajaxの呼び出しを使用するとよいでしょう。 – Leonard2

答えて

0

あなたの目標は、実際のデータが表示されている場合、あなたは(ループなし)いつものようにページをレンダリングし、JSでページをリロードすることができますが:

<script> 
    setTimeout(function() { 
     window.location.reload() 
    }, 5000); 
</script> 
+0

ありがとう、それは助けです。 – kelly