質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Bottle

Bottleは、PythonのWebサーバです。1つのPythonファイルで構成されており、非常に軽量。Web APIの作成や導入が簡単で、DjangoやFlaskに比べ使いやすくシンプルなことが特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

5923閲覧

BottleでWebページを表示できない。

akira_5316

総合スコア8

Bottle

Bottleは、PythonのWebサーバです。1つのPythonファイルで構成されており、非常に軽量。Web APIの作成や導入が簡単で、DjangoやFlaskに比べ使いやすくシンプルなことが特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/05/08 07:13

前提・実現したいこと

BottleでWebページに”Hello World”と表示したいです。

発生している問題・エラーメッセージ

①仮想環境を作成
②Bottleをインストール
③プログラム(以下に記載)を実行
④Bottleフレームワークの開発用サーバを起動
⑤Listening on htto://localhost:8000/と表示され、
URL部分をブラウザに入力すると、エラーになります。

コマンドプロントに以下のエラーが表示されました。

C:\Users*****(本名)\Desktop\yasashiipython\pybotweb\lib\site-packages\bottle.py:3468: Deprecation Warning: Flags not at the start of the expression “((?m)[urbURB]?(?:’’(“ (truncated) Patterns = [re.comple (p%pattern_vars) for p in patterns] C:\Users*****(本名)\Desktop\yasashiipython\pybotweb\env\lib\site-packages\bottle.py:3468: DeprecationWarning: Flags not at the start of the expression '\[\{((?:((?m)[urbURB'(truncated) patterns = [re.compile(p&pattern_vars) for p in patterns] 127.0.0.1 - - [07/May/2018 22:2625] “GET / HTTP/1.1” 404 720 127.0.0.1 - - [07/May/2018 22:2625] “GET /favicon.ico HTTP/1.1” 404 742 #Ctr,Cでquit後 sys:1: ResourceWarning: unclosed <socket.socket fd=360, family=AddressFamily.AF_INET,type=Socketkind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8000) #ブラウザ上のエラー表示 Error: 404 Not Found Sorry, the requested URL 'http://localhost:8080/' caused an error:

該当のソースコード

Python

1from bottle import route, run 2 3 4@route('/hello') 5def hello(): 6 return 'Hello World!' 7 8run(host='localhost', port=8000, debug=True) 9

試したこと

このエラーが出現する前に、もう1つエラーが出ていました。
調べてみると、「マシン名が日本語の文字列だと発生するエラー」だったので、
マシン名を変更して、そのまま再起動しました。エラー名は控えていません。

ホスト名を8080、8000と試したが、エラー。

補足情報(FW/ツールのバージョンなど)

windows8.1 64bit
Python3.6.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

アクセスログに 404 と出ているので、URLが見つからないのでしょう。

127.0.0.1 - - [07/May/2018 22:2625] “GET / HTTP/1.1” 404 720 127.0.0.1 - - [07/May/2018 22:2625] “GET /favicon.ico HTTP/1.1” 404 742

ご提示のコードですと@route('/hello’) とあるので、URLのPATHに/helloを指定する必要があります。

http://localhost:8000/hello/ とブラウザで指定してアクセスしてみてください。(TCPポート番号が8000の場合)

投稿2018/05/08 07:34

dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/08 08:14 編集

上記回答が非常に的を得ていたので、追記で勉強の支援です。 @route('/hello')→@route('/')に修正すれば、http://localhost:8000/ でアクセス可能とおもわれます。 ぜひ、いろいろ変更してみてルーティングの勉強もしながら試してみてはいかがでしょうか
dodox86

2018/05/08 08:19 編集

t_shinoharaさん、フォローありがとうございます。同意します。'/'をルーティングに含めておいたほうが、UX的にも、ブラウザにも優しいですし。(質問例では、/favicon.ico もGETしに行っちゃってます)
akira_5316

2018/05/08 08:52

dodox86さん、ご回答ありがとうございます!試したところ、Hello World表示されました! t_shinoharaさん、追加情報ありがとうございます!@route('/')でも、HelloWorld表示されました。 それがなぜなのか、調べてみます。 開発サーバのルーティング機能が、/helloであれば対応するhello関数を実行して結果を返してくれるのですね。だからURLに/helloが抜けていると、エラーとなってしまう。また、エラーの番号を調べるのも大事だなと思いました。
akira_5316

2018/05/08 09:04

dodox86さん、サイト情報ありがとうございます。 @routeデコレータでルーティング対象のURLを('/')と指定すると、'/'が呼び出されたらhello関数を呼ぶと指定されるので、HelloWorldが表記されるという理屈なのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問