2016-05-23 2 views
0

私はラズベリーパイのステッパーモーターを回転させるために私が使用している非常に単純なウェブページを持っています。私のhtmlファイルはこれです:CGIのPythonスクリプトを使用してWebページをリフレッシュ

<html> 
<head> 
<script Language="Javascript"> 

function ccw() 
{ 
    document.location="cgi-bin/rotate_45_ccw.py"; 
} 

function cw() 
{ 
    document.location="cgi-bin/rotate_45_cw.py"; 
} 

</script> 
</head> 

<body> 
    <div style="text-align:center"> 
    <h1>Raspberry Pi GPIO</h1> 
<br> 
    <button type="button", id="ccw", onclick="ccw()", value="value CCW">Rotate CCW</button> 
    <button type="button", id="cw", onclick="cw()", value="value CW">Rotate CW</button> 
<br> 
    </div> 

</body> 
</html> 

私が何をしたいページをリフレッシュするために(ユーザーがいずれかのボタンをもう一度クリックすることができるように)スクリプトのいずれかが、実行された後です。私が思うばかげたやり方は、Pythonスクリプトが上記のhtmlコードを出力することです。よりスマートで簡単な方法がありますか?

ありがとうございます!

答えて

0

周りの検索の多くの後、私は最終的にそれを得た!

print ("Content-type: text/html\n\n") 
print ("<html><body>\n") 
print ("<meta http-equiv=\"refresh\" content=\"0; url = http://192.168.1.109\" />") 
print ("</body></html>") 
+0

良い - 私はそれがHTMLのメタタグを伴わずにhttpレベルで行われている可能性があると思っていました - しかし確かにそれはブラウザではうまくいくでしょうあなたはページを引っ張るためにcURLのような他のツールを使用します) –

+0

はい、私はこれが実際の動作を理解していないにもかかわらず、HTTPステータスコードを送信するのとは異なることを理解しています: **ステータスコードを使用してこれを行う方法に関するドキュメントを見つけるのは非常に困難でした**。私はそれほど簡単ではないと思っているので、誰も自分のような奴のためにそれを説明するのは気にしない;) – panos

0

いいえ、単純にページを返さないでください。 f5-reloadはアクションを再実行します。コントロールページのURLを持つ303 See Otherをpythonスクリプトから返します。したがって、常に同じ「ランディングページ」を持ち、同じことを2回コーディングする必要はありません。理想的には、ローテーションアクションはhttp POSTでなければなりません(副作用がないわけではありません)が、これは別のトピックです。

+0

感謝ステファン:だから、ホーム・ページにリダイレクトさせるために、私は私のpython3スクリプトの末尾に以下のprintステートメントを追加する必要があります! '303 See Other'をどのくらい返すのか?私のCGIスクリプトは現在、 'print" Content-type:text/html \ n \ n "'を返します。 – panos

+0

hmm、python cgiスクリプトではあまりよくありません。通常、これはHTTP/1.1 303のようにContent-typeのものよりも上になります。その他の\ n場所: \ n "'を参照してください。例: http://stackoverflow.com/questions/17111809/redirection-from-a-python-cgi-page-to-another-page-without-hyperlinksまたはhttp://stackoverflow.com/questions/6122957/webpage-redirect- main-page-with-cgi-python –

+0

追加情報ありがとうございます。その2行( '' HTTP/1.1 ... ''と '' Location:.... "')だけを印刷すると、エラーが出ます( "Bad header")。ですから、私のスクリプトの2行だけが出力されるべきですか?他に何かありますか? – panos

関連する問題