pythonフレームワークのdjangoとbottleでHello World!するまでの流れをまとめてみよう

少し今まで学んだことの復習をしたいです。 今回はdjangoとbottleでのHello World!までの流れを復習します。<br><br>



#### pythonフレームワークのdjangoでHello World!するまでの流れをまとめてみよう ]

djangoはコマンドプロンプトからテンプレートを作成することができます。<br>
コマンドは<br>

```
py -m django startproject 任意の名前 
```


これでテンプレートをダウンロードできます。
<br><br>

```
 tree ディレクトリ名 /f
```
コマンドでディレクトリ構成を確認。<br>

```
│  manage.py
│
└─djangotest
        settings.py
        urls.py
        wsgi.py
        __init__.py
```

これがdjangoの基本的なテンプレートになります。<br>
まずsettings.pyを開きます。<br>
LANGUAGE_CODEはデフォルトは英語なので’ja’に変更しておきましょう。<br>
TIME_ZONEはAsia/Tokyoに！ ここまできたら実際にハローワールドをさせるためのアプリケーションを作成しましょう。<br>
ディレクトリのmanage.pyのある部分で<br><br>

```
└─djangotest │ manage.py 
```

<br>

```
py manage.py startapp 任意のアプリ名
```

<br>
これでhelloworldを出力するdjangoアプリケーションのテンプレートが作成されます。
<br><br>
再びディレクトリ構成を確認してみると・・・。

```
└─djangotest
    │  manage.py
    │
    ├─djangotest
    │  │  settings.py
    │  │  urls.py
    │  │  wsgi.py
    │  │  __init__.py
    │  │
    │  └─__pycache__
    │          settings.cpython-37.pyc
    │          __init__.cpython-37.pyc
    │
    └─helloworld
        │  admin.py
        │  apps.py
        │  models.py
        │  tests.py
        │  views.py
        │  __init__.py
        │
        └─migrations
                __init__.py

```

helloworld以下が追加されていますね。（今回はアプリ名をhelloworldにしました。)
<br><br>

アプリケーションを作ったらsettings.pyに認識させなくてはいけません。<br>
settings.pyの以下の部分に<br><br>


```

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]


```
<br><br>

```
'helloworld.apps.HelloworldConfig',
```

<br>
と加えてください。helloworldのところはあなたが作成したアプリケーション名ですよ。<br>
僕はhelloworldとしたのでhelloworldとなっているだけです。<br>
大文字小文字間違えないでね。
<br>

次はアプリケーションにアクセスするURLを作ります。<br>
urls.pyという

```
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]


```
<br>
こんなことが書いてある場所に<br>

```
from django.urls import path, include←includeを追加

path('アプリをアクセスさせたいURL名', include('作成したアプリケーション名).urls')),
```
<br>
と書いてください。
<br>
僕の場合こうなります。<br>

```
path('helloworld', include('helloworld.urls')),
```

<br>
しかし実はアプリケーションの方にもurls.pyを作らないといけません。<br>

```
└─djangotest
    │  manage.py
    │
    ├─djangotest
    │  │  settings.py
    │  │  urls.py
    │  │  wsgi.py
    │  │  __init__.py
    │  │
    │  └─__pycache__
    │          settings.cpython-37.pyc
    │          __init__.cpython-37.pyc
    │
    └─helloworld
        │  admin.py
        │  apps.py
        │  models.py
        │  tests.py
        │  views.py
        │  __init__.py
        │
        └─migrations
                __init__.py

```

helloworldディレクトリの中にurls.pyというファイルを追加しましょう。<br>
urls.pyにはまずこう記載します。<br><br><br>

```
from django.urls import path
from . import views
```

from django.urls import pathと書かないとurlにパスが通りません。<br>
またfrom . import viewsは後ほどこのurlsの中身をviews.pyに記載するので参照できるようにするためにこのように書いておきます。<br>
さらにこの下に

```

app_name = 'アプリケーション名'

urlpatterns = [

path('', viewsで作成する関数名.html, name='任意の名前'),
```

<br>
というように記載します。<br>
ではviews.pyにhelloworldするための関数を書いていきましょう。<br><br><br>

```

from django.http import HttpResponse

def 先ほど指定した関数(request):
    return HttpResponse("Hello World!")
```

<br>
そうしたらコマンドプロンプトでpy manage.py のあるディレクトリに移動をして、

```
py manage.py runserver
```
<br><br><br>
こんな感じで出てくるので

```
You have 14 unapplied migration(s). Your project may not work properly until you
 apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
March 18, 2019 - 16:25:27
Django version 2.0.2, using settings 'djangotest.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

```
<br><br>

```

http://127.0.0.1:8000/
```

<br>
このURLを開きます。<br>
・・・がpage not foundになるはずなので。<br>urlsで指定した・・・。

```
from django.urls import path, include←includeを追加

path('アプリをアクセスさせたいURL名', include('作成したアプリケーション名).urls')),
```
<br>
アプリをアクセスさせたいURL名！！http://127.0.0.1:8000/ の後ろに追加しましょう。<br><br>
このURLにアクセスするとHello World!と表示されますよ。<br>
・・・ちなみに。<br>

```
app_name = 'アプリケーション名'

urlpatterns = [

path('', viewsで作成する関数名.html, name='任意の名前'),
```


<br><br>
アプリケーション側に記載したURL。

```
path('/hogeee/', viewsで作成する関数名.html, name='任意の名前'),
```
<br>

とかにするとURLが<br>
```
http://127.0.0.1:8000/任意のURL名/hogeee/
```

<br>
とかになるので試してみてね。



#### pythonフレームワークのbottleでHello World!するまでの流れをまとめてみよう

続いてはbottle編。<br>
bottleはdjangoみたいにコマンドプロンプトでテンプレート作ってくれる機能はあるんですかね？<br>
僕はそれ習ったことないので普通にファイルを作成します。<br>
任意のディレクトリを作成してそこにパイソンファイルを作ってください。<br>
僕はこんな感じにしました。<br><br><br>

```

└─helloworld
        helloworld.py
```

<br><br>
<span style="font-size: 200%"><b>すくなっ！！！！！！！！！</b></span>
<br><br>
bottleは最軽量のpythonフレーワークなのです。<br>
helloworld.pyにはこのように書きました。<br>

```
from bottle import route, run

@route('/helloworld')
def helloworld():
    return 'Hello World!'

run(host='localhost', port=8080, debug=True)

```

<br><br><br>
bottleからroute, runをimportします。<br>

```
from bottle import route, run
```
<br>

```
@route('/helloworld')
```
<br>
routeは先ほどのurls.pyの機能を果たしています。urlを構築しているのです。<br>
その下に関数

```
def helloworld():
    return 'Hello World!'
```

<br>
ここがdjangoでいうviews.pyの関数部分です。<br><br><br>


一番最後に

```
run(host='localhost', port=8080, debug=True)
```
<br><br>
この部分がdjangoでいうmanage.pyの部分ですね。
<br>
ローカルサーバーがhelloworld.py内に格納されているので、コマンドプロンプトで

```
py helloworld.py
```

<br>
とするとサーバーが起動、

http://localhost:8080/(routeで指定したurl)


<br><br>
とURLに打ち込むとHello Worldコマンドが出力されます。<br>
bottleは1つのファイルでアプリケーションが作れるのでお手軽ですが、その分拡張性はdjangoに劣るので自分の開発したいものに合わせて使い分けるといいですね。<br>