[Django]viewの作成方法

### アプリケーションを作成
$ python manage.py startapp hello

– migrationフォルダ: データベース関連の機能
– __initi__.py : アプリケーションの初期化処理を行うスクリプトファイル
– admin.py : 管理者ツールのため
– apps.py : アプリケーション本体の処理
– models.py : モデルに関する処理を記述
– tests.py : プログラムのテストに関するもの
– views.py : 画面表示

### views.py
/hello/view.py

from django.shortcuts import render
from django.http import HttpResponse # HttpResponseクラスをimport

def index(request): # requestはHttpResponseクラスのインスタンス
	return HttpResponse("Hello Django!!")

# Create your views here.

urlpatternsに登録した情報を元にどのアドレスにアクセスしたらどの処理が呼び出されるか決まる

### urls.py
/django_app/urls.py

from django.contrib import admin
from django.urls import path
import hello.views as hello

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/', hello.index), # path(アドレス、呼び出す処理)
]

$ python manage.py runserver 192.168.33.10:8000

第一印象としては、Laravelは直感的ですが、Djangoはより関数的な書き方のように感じます。

Djangoプロジェクトの中身とサーバ起動

### プロジェクトフォルダ
– __initi__.py : 初期化処理を行うスクリプトファイル
– asgi.py : ASGIという非同期Webアプリケーションの為のプログラム
– settings.py : プロジェクトの設定情報
– urls.py : URLを管理するファイル
– wsgi.py : 一般的なWebアプリケーションプログラム
– manage.py : 機能に関するファイル

### サーバー起動
$ python manage.py runserver
-> このサイトにアクセスできません

ん? vagrantだから、http://127.0.0.1:8000/ は通ってない?

公式tutorial01/を見ると、ipとポートを指定できるみたい。
再度実行
$ python manage.py runserver 192.168.33.10:8000

あれ?
DisallowedHost at / … が表示される。
settings.pyのALLOWED_HOSTS = []を変更する

ALLOWED_HOSTS = ['192.168.33.10']

$ python manage.py runserver 192.168.33.10:8000

OK^^

Djangoを始めよう

$ python -V
Python 3.8.0
$ sudo apt install python-pip
$ pip install Django==3.0.4
Traceback (most recent call last):
File “/usr/bin/pip”, line 9, in
from pip import main
ModuleNotFoundError: No module named ‘pip’

ん?
$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py

再度インストール
$ pip install Django==3.0.4

### make Django project
$ mkdir django
$ cd django
$ django-admin startproject django_app

おおおおおお、ファイル少ないな
テンション上がってきました