2011-07-07 5 views
0

私は入力を電子メールで送信するフォーム処理Pythonスクリプトを持っています。それから、見出し1にメッセージが送信されたというWebページを表示したいだけです。フォーム処理部分は動作していますが、HTMLをレンダリングするブラウザではなく、ブラウザにテキストが表示されます。PythonでブラウザにHTMLを書き出す方法

print 'Content-type: text/html\n\n' 

私はこの行に起因すると思われますが、どんなplsが助けますか?

これはイムそれ

Content-type: text/html 


<HTML><HEAD><TITLE>Python Sample CGI</TITLE></HEAD> 
<BODY> 
<H1>This is a header</H1> 
<p> 
See this is just like most other HTML 
<br> 
</BODY> 
</html> 
+0

あなたは、小さな電子メールを作成して、私たちにそれのソースを示すことができる: あなたは、ポート番号は、ブラウザとタイプを開き、その後、8000 かもしれ取得します。 – Michas

+0

今私はちょうど私が理解できない部分を隔離しています上記のテストスクリプトはブラウザに出力HTMLを送信する電子メールを持っていませんが、得られるのはテキストだけです。私はさまざまなWebサーバーのApache、IIS、abyss Webサーバーを試しました。 – Zen

答えて

1

これはあなたの問題です:

print 
print 'Content-type: text/html\n\n' 

あなたのHTTPヘッダが印刷された最初のものである必要があります。 HTTPヘッダーの末尾にの末尾にと書かれている空白行があります。そのため、ブラウザでは宛にが応答本文の先頭にHTTPヘッダーとして取り込まれます。 HTTPヘッダーは表示されません(Webサーバーによって提供されるものを除く)、確かにContent-type:ヘッダーはありません。

この場合、サーバまたはブラウザのコンテンツタイプがtext/plainにデフォルト設定されているため、ブラウザはHTMLタグを解釈しようとしません。 その他。

TL; DR:最初のブランクprintを取り出します。

+0

私はちょうどこれがタイプアップし始めていることを確認しました。 – GreenMatt

0

を実行した後、私はちょうど私がブラウザに何を参照してください。このテストスクリプト

print 
print 'Content-type: text/html\n\n' 

print '<HTML><HEAD><TITLE>Python Sample CGI</TITLE></HEAD>' 
print '<BODY>' 
print '<H1>This is a header</H1>' 

print '<p>' #this is a comment 
print 'See this is just like most other HTML' 
print '<br>' 
print '</BODY>' 
print '</html> 

を、これがされて実行してみました

print "<html><head><title></title></head></html>" 

印刷しようとするものですユーザーに、あなたが見たいページにリダイレクトするだけです:

print 'Location: /thanksforemail.html' 
print 
+0

うまくいきましたが、HTMLの代わりにテキストでレンダリングする理由を教えてください。 – Zen

+0

ブラウザのウィンドウに直接タグが表示されますか? –

+0

はい私はHTMLコードを文字通り見ることができます – Zen

0

物事のカップルは、まずあなたが一番上に正しい彼女バング表記を持っていることを確認してください。また、

#!/usr/bin/env python 

、あなたはCGI、cgitbをインポートし、そしてあなたがcgitb.enableを持っていることを確認してください()。 (でも、cgitbのものはそれほど重要ではありません)

最後に、ファイルが正しくchmodeされていることを確認してください。私は通常755の許可を得て鉱山を作ります。

+0

フォームの処理には便利ですが、問題の単純なテストスクリプトではこれらのインポートは必要ありません。 – GreenMatt

0

yourfile.pyファイルをcgi-binフォルダ内に保存してください。 CGIHTTPServer.pyファイルをcgi-binフォルダの外に保管してください。 yourfile.pyファイルを実行した後にCGIHTTPServer.pyファイルを実行してください。 localhost:8000/cgi-bin/yourfile.py

関連する問題