はじめに
最近、Habrには優れたボトルフレームワークに関する記事が1つもありませんが、偶然にもかなりの人が使用していることに気付いたので、この記事ではそれについてお話します。
設置
Bottleは非常に軽量なフレームワークであり、bottle.pyという1つのファイルに収まります。
ここからインストールするか、pip install bottleを作成します。
特徴
ミニマリズムにも関わらず、Bottleは非常に多くの機会を提供しており、中小規模のプロジェクトには100%十分です。 主な機能のリストは次のとおりです。
ルーティング
ほとんどのpythonフレームワークのように、ボトル内のルーティングはデコレーターを使用して行われます。 例:
@route('/hello/<name>') def index(name): return name
正規表現に基づいて動的なURLを作成することもできます。
@route('/news/<number:re:[0-9]*>') def show_news(number): pass
テンプレート
フレームワークの強みの1つはテンプレートエンジンです。 テンプレートエンジンを使用するには、次のような軽量の構造を記述するだけです。
template('template_name', name=name, number=number, foo=bar)
関数の最初の引数は、テンプレートテキストを含むファイルの名前です(この場合、テンプレートはtemplate_name.tplと呼ばれます)。
ファイル自体に、変数の名前を中括弧2つで記述する必要があります。
Hello, {{name}}, glad to see you!
デフォルトでは、HTMLコードが括弧で示されている場合、XSS攻撃を回避するために実行されないように作成されています。 これが本当に必要な場合は、{{!Name}}と書くことができます。 Bottleは非常に優れた機能も提供します。テンプレート内にPythonコードを記述します。 pythonを呼び出すには、行の先頭に%を入れるだけです。 例:
%a = 100500 %for i in xrange(a): <div class="image_{{i}}"><img src="......{{i}}.jpg"></div> %end
テンプレートからテンプレートを含めることもできます。これにより、テンプレートを美しくきれいに含めることができます。
%include template_num2 foo=bar, blabla=qweqwe
POSTルーティングとフォーム処理
フォームの後続の処理でPOST要求を処理する機能がない場合、どのような通常のフレームワークが存在できますか?
POSTリクエストを処理するためのメカニズムはGETリクエストを処理するためのメカニズムとまったく同じで、ルートという単語をpostに置き換えるだけです。
@post("/url") def foo(): pass
フォームにアクセスするには、「名前」フィールドの属性が使用されます。 例:
<input name="age" placeholder="">
フォームの内容を取得するには、次の構成を使用する必要があります。
request.forms.get("age")
ファイルを処理することもできます:
request.files.get("picture")
クッキー
ボトル内のCookieの処理は、Cookieの設定が非常に簡単です。
response.set_cookie("name", value, max_age=100500)
値を取得するには:
request.get_cookie("name")
サーバー
単純なhttpサーバーがボトルに縫い付けられていますが、これは1ページの非常に迅速なテストにのみ適しています。
run(host='localhost', port=8080)
当然、大規模なプロジェクトに使用することは不可能なので、ボトルを何らかの方法でapacheまたはnginxに関連付ける必要があります。 正直なところ、私は常に自分自身でapacheを使用しているので、それについて話すことしかできませんが、ngninxではすべてが非常に簡単です。 Bottleはmod_wsgiを介してApacheと通信します。 これを実装するには、次を実行する必要があります。
- このコンテンツでadapter.wsgiファイルを作成します
ネタバレ import sys, os, bottle sys.path.append(os.path.dirname(os.path.abspath(__file__))) os.chdir(os.path.dirname(os.path.abspath(__file__))) import index
- mod_wsgiをインストールして有効にします
- 仮想ホスト設定を追加
ネタバレ <VirtualHost *:80> DocumentRoot /var/www/foo </VirtualHost> <Directory /var/www/foo> Options FollowSymLinks ExecCGI AddHandler wsgi-script .wsgi Order allow,deny AllowOverride All Allow from all </Directory>
よくある間違いとその解決策
おわりに
当然、フレームワークに関するすべての情報を1つの投稿に収めることは困難です。最も重要なことだけを書きました。 幸いなことに、ボトルにはかなり良い
ドキュメントがありますので、読んでください。 良い週末を!