原文: http://www.devshed.com/c/a/Python/Karrigell-for-Python/
Python は Web 開発専用に設計されていないため、多くの Python ユーザーが現在、Python をフレームワーク上で実行できるプログラムを開発しています。
Karrigell は、現在数多く存在する Python/Web
フレームワークの 1 つであり、Karrigell について簡単に説明
します。
重要なのは、Python の初心者でも、Karrigell を使用する際に混乱することはなく、Karrigell はその構造が単純であるため、Python の一部の機能を制限せず、独自の Web サーバーを使用して作業を完了できることです。ただし、他の Web サーバー (Apache など) との連携も非常に簡単なので、Karrigell を選択した場合は、以前に使用していた Web サーバーを引き続き使用できます。
この記事は Karrigell から始まります。インストールとインストールから始めましょう。 Karrigell のいくつかの重要な機能を紹介します。
Karrigell
のインストール 上で述べたように、最初に行う必要があるのは、SourceForge から最新の Karrigell をダウンロードし、それを解凍することです。
次に、Karrigell.py をダブルクリックして、Karrigell の組み込み Web サーバーを起動します。ただし
、他の Web サーバーで Karrigell を使用したくない場合は、Karrigell のインストールはここで終了します。
Karrigell と統合するように Web サーバーを設定します。例として Apache を取り上げます。Apache が関連するリクエストを Karrigell に送信できるように、Karrigell を Apache のバックグラウンドで実行する必要があります。
Apache は通常ポート 80 で実行されるため、Karrigell 用に別の実行ポートを設定する必要があります。1 つはコマンドラインを使用して完了する方法、もう 1 つは Karrigell の設定ファイルを変更する方法です。コマンドラインを使用して、ポート 8080 で Karrigell を実行します。
C:Karrigell>Karrigell.py -P 8080
次に、Karrigell.ini を見つけて、文
port=8080
を追加する必要があります。次に、Apache を設定する必要があります。一般に、php などの静的ファイル リクエストを Apache で処理する必要があります。または、別のパスを設定することもできます。 Apache がリクエストを Karrigell に渡す必要がある場合は、Apache の httpd.conf ファイルに次の内容を追加する必要があります
。
RewriteRule ^/(.*).py(.*) http://localhost:8080/$1.py$2 [L,P]
RewriteRule ^/(.*).ks(.*) http://localhost:8080/$1.ks$2 [L,P]
RewriteRule ^/(.*).hip(.*) http://localhost:8080/$1.hip$2 [L,P]
RewriteRule ^/(.*).pih(.*) http://localhost:8080/$1.pih$2 [P]
この記事では、必要に応じて、特定のファイルに対するすべてのリクエストを Karrigell に転送するように設定できます。 testarea パスが使用されるため、httpd.conf を次のように設定します。
RewriteEngine On
RewriteRule ^/testarea(.*) http://localhost:8080/testarea$1 [P]
もちろん、次のようにすることもできます:
RewriteEngine On
RewriteRule ^/testarea/(.*).py(.*)
http://localhost:8080/testarea/$1.py$2 [L,P]
RewriteRule ^/testarea/(.*).ks(.*)
http://localhost:8080/testarea/$1.ks$2 [L,P]
RewriteRule ^/testarea/(.*).hip(.*)
http://localhost:8080/testarea/$1.hip$2 [L,P]
RewriteRule ^/testarea/(.*).pih(.*)
http://localhost:8080/testarea/$1.pih$2 [P]
スクリプトとサービス
Python スクリプトと Karrigell サービスは、Karrigell を使用する Python 開発者にとって最もアクセスしやすい 2 つの概念です。Python スクリプトは Python スクリプトであり、開発者は print ステートメントを使用します。まだ理解していない場合は、testarea ディレクトリを作成してから、新しいファイル test.py の作成を開始します。
print "<center>"
「こんにちは!」を印刷します。
「<br /><br />」を印刷
print "カリゲルは設定されており、動作しています。"
print "</center>"
Karrigell が以前に正しく設定されていた場合は、このファイルをブラウザで開きます。出力が表示されます。
Python スクリプトではフォームを簡単に使用することもできます。ユーザーが自分の名前を入力できる単純なページを作成してみましょう。askname.py:
if QUERY.has_key ( "name" ):
print "あなたの名前は", _name + "."
それ以外:
「あなたの名前は何ですか?<br /> 」を印刷します。
print "<フォーム>"
print "<input type='text' name='name' /><br />"
print "<input type='submit' value='Proceed' />"
print "</form>"
Karrigell サービスは、Python スクリプトと同様に記述されます。この目的は、リクエストをユーザー指定のメソッドにマップすることです。たとえば、次の URL は、Karrigell サービスの後に渡されます。 call test このメソッド
http://localhost/testarea/test.ks/test を使用
して、実際にこの例の
defindex() を作成できます。
「インデックス関数」を印刷します。
デフォルトテスト():
print "テスト関数。"
メソッド名を渡さずにこれらの Python スクリプトを使用すると、プログラムはデフォルトでインデックス メソッドを実行し、メソッド名 test が渡されると、存在しないメソッドが呼び出されます。異常を投げます。
Karrigell サービスを使用してフォームに渡されたデータを処理することも簡単です。 ascname.ks
defindex() を作成しましょう。
「あなたの名前は何ですか?<br /> 」を印刷します。
print "<form action='nameSubmit'>"
print "<input type='text' name='name' /><br />"
print "<input type='submit' value='Proceed' />"
「</form>」を印刷します
def nameSubmit ( name ):
print "あなたの名前は", name + "."
もちろん、メソッドへの外部パブリック アクセスを許可することは非常に危険です。権限のないユーザーがメソッドにアクセスできないようにするには、次のようにメソッドにプレフィックスを付けます:
def _private():
HIP を使用すると
、_private メソッドにアクセスしようとすると例外がスローされます。
この
コードに print ステートメントが含まれている場合、それは素晴らしいことになります。幸いなことに、Karrigell は HTML Inside Python と呼ばれる機能を提供しており、このような厄介な print ステートメントをすべてクリーンアップします。また、askname.py から TML Inside Python への変換も非常に簡単です。 askname.py の印刷を削除し、ファイルの名前を askname.hip
f QUERY.has_key ( "name" ) に変更します。
「あなたの名前は、_name + "です。」
それ以外:
「あなたの名前は何ですか?<br /> 」
"<フォームメソッド='POST'>"
"<input type='text' name='name' /><br />"
"<input type='submit' value='Proceed' />"
"</form>"
これは HTML Inside Python です。Karrigell はファイルを検査し、必要な箇所に自動的に print を追加します。これは、Karrigell Inside HTML がいかに簡単に学習できるかを示し
て
います
。
Inside Python では、当然のことながら、Python Inside HTML も提供されます。通常どおり、特別なタグで Python ステートメントを記述し、最終結果をユーザーのブラウザに送信します。random.pih
<% import random %>
を作成してみましょう。
乱数: <b><% print random.random() %></b>
ご覧のとおり、Python Inside HTML の概念は非常に単純です。実際、コード ブロックはさらに単純になります:
<%=random。 .random() %>
しかし、フォーム データの処理など、より複雑なロジックを扱う場合はどうすればよいでしょうか? フォーム データは、Python スクリプトで処理されるのと同じように処理できます。これは、askname.py askname.pih<%
のレプリカです。
QUERY.has_key ( "name" ) の場合: %>
あなたの名前は <%= _name %> です。
<% 終了 %>
<% その他: %>
あなたの名前は何ですか?<br />
<フォームメソッド='POST'>
<input type='text' name='name' /><br />
<input type='submit' value='Proceed' />
</form>
<% end %>
<% end %> の使用に注意してください。これは、上記の条件ステートメントのインデントと同じように、コードのブロックの終わりをマークします。別の方法として、To にも使用される indent タグを使用します。
コード
のインデントを識別します。
<% if QUERY.has_key ( "name" ): %>
あなたの名前は <%= _name %> です。
<% その他: %>
あなたの名前は何ですか?<br />
<フォームメソッド='POST'>
<input type='text' name='name' /><br />
<input type='submit' value='Proceed' />
</form>
</indent>
機能をさらに
試してみましょう
。タグは Python スクリプト、tagtest.py を通じて使用できます。
rom HTMLTags import *
print CENTER ( B ( "Test." ) )
セッションも Karrigell で処理できます。Karrigell はオブジェクト指向に近い優れたセッション メカニズムも提供します。Going でデモするための簡単なコードを作成してみましょう。最初の例に戻ると、ユーザーがページを更新すると、その番号はセッションに保存されるため、そのまま残ります。もちろん、ユーザーには再選択するオプションがあります。新しいラッキー番号を取得するには、sessin を閉じて、luckynumber.ks という名前の Karrigell サービスを作成し、次のコードを入力します。
ランダムなユーザーをインポート
= Session()
defindex():
dir ( user ) に「luckyNumber」がない場合:
user.luckyNumber = ランダム.randint (0, 20)
print "あなたのラッキーナンバー:", user.luckyNumber
「<br /><br />」を印刷
print "<a href='reset'>ラッキー ナンバーをリセット</a>"
デフォルトリセット():
user.close()
print "あなたのラッキーナンバーはリセットされました。"
「<br /><br />」を印刷
print "<a href='index'>戻る</a>"
結論
Karrigell では、Web を開くために Python スクリプト、Karrigell サービス、HTML Inside Python、および Python Inside HTML の 4 つの方法を提供しています。しかし、それぞれの方法には独自の特徴があります。共通の利点の 1 つは、使いやすさです。Karrigell を使用すると、Web 開発がエレガントでシンプルになります。これは、Karrigell を単独で使用する場合でも、Apache と組み合わせて使用する場合でも、驚くほど簡単です。 。