分12requestオブジェクト前節のスクリプトの17,18行目のように,クライアントから<form>タグやURIの引数として送られてくるデータ(リクエスト・パラメータ)は,Bottleではrequestオブジェクトを経由して受け取ります。..."の行でrequestモジュールをimportしておきます。このモジュールをimportすれば,前節のスクリプトのように<form>タグ経由でPOSTメソッドを使って送られてくるパラメータを,<input>タグなどのname属性をキーワードに,request.forms.get(name)として取り出すことができます。GETメソッドでURLパラメータとして送られてくる値を取り出すには,同じrequestオブジェクトのrequest.query.get(name)を使います。Bottleでは,これらリクエスト時に送られてくるパラメータは,Pythonの辞書型を拡張したFormsDictと呼ばれるクラスに収められ,辞書型のように扱うことも,メソッドを使って"request.forms.get(name)"のように取り出すことも可能です。Bottleがどのようにリクエスト・パラメータを扱うか確認するために,こんなスクリプトを書いてみました。debug=True)このスクリプトでは"http://localhost:8080/check"というURIを,5行目でGETメソッド,6行目でPOSTメソッドを指定して,両メソッドとも7行目のkey_check()という関数に結びつけています。8行目から15行目は,requestオブジェクトにどういうデータが収められているかを観察するためのprint文で,これらprint文の出力は,ブラウザではなくスクリプトを起動したコンソールに出力されます。Bottleでは,return文で返したデータしかクライアントには送られません。17行目から29行目は,POSTメソッドでデータが送られてきた場合はその内容を表示し(18~21行目⁠)⁠,GETメソッドでリクエストされた場合はPOSTメソッド用の<form>タグを返す(23~28行目⁠)⁠,という処理です。このスクリプトを起動して,ブラウザから"http://localhost:8080/check"にアクセスすると,ブラウザ側には入力を促す<form>タグの画面が,スクリプトを起動したコンソールには空っぽのrequestオブジェクトの中身が,それぞれ表示されます。GETメソッドでアクセス<form>タグに何かテキストを入力して送信すると,request.formsとrequest.paramsに辞書型のデータが収められ,ブラウザには21行目の"Hello"メッセージが表示されます。ようにアクセスしてみると,request.queryとrequest.paramsに辞書型のデータが収まります。いった形で利用できます。<form>タグに日本語を入れると文字化けしてしまいます。これは,HTTPの仕様上,UTF-8な文字列も単なるバイト列と見做して,Latin-1な文字コードで表示してしまうためで,日本語のようなマルチバイト文字を扱う場合は,"request.query.getunicode(r_name)"や"request.forms.getunicode(h_name)"のように,getメソッドの代わりにgetunicodeメソッドを使う必要があります。Hellkampさんが,なぜこのコードを"Bottle"と名付けたかは,ドキュメント類をあれこれ調べたものの,よくわかりませんでした。Bottleのホームページのロゴなどを見ると,化学実験のような丸底フラスコが印象的で,みんながあれこれコードを書くための器,くらいのつもりで"Bottle"と名付けたような気がします。Webフレームワークも存在し,こちらは"Bottle(瓶)"に対する"Flask(フラスコ)"という言葉遊びで命名されたそうです。呑兵衛の筆者には,"ボトル"とか"フラスコ"と言われると,「⁠スキットル」と呼ばれる,ズボンの尻ポケットに突っ込んでおくような,携帯タイプのウィスキー瓶を連想してしまいます(苦笑⁠)⁠。更なる連想で,今回のタイトルに借用した「ウィスキー・ボトル・ブルース」は,シンガー・ソングライターのイルカさんの2枚目のアルバム「小さな空」に入っている楽曲で,場末の飲み屋の裏口に廃棄されたウィスキー瓶たちが,ワイワイガヤガヤと自分たちの境遇を語る楽しい歌です。興味を持たれた方はぜひ聞いてみてください。Linuxとりまとめ役。人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。