Django開発環境構築~備忘録~

$ sudo apt-get update
$ sudo apt-get upgrade 
$ sudo apt-get install python3
$ sudo apt-get install python3-pip
$ pip3 install django #djangoのバージョンの確認 

$ python3 -m django --version
 #pipのupgrade方法 

$ pip3 install --upgrade pip
 #仮想環境の構築 
$ pip3 install virtualenv  #仮想環境のフォルダを作成 
$ mkdir kittyomo
$ cd kittyomo
 #仮想環境構築 

$ python3 -m virtualenv <好きな名前>
$ ls #フォルダが出来ていることを確認 
 #仮想環境の実行 
$ source <好きな名前>/bin/activate
$ pip3 install django
 #仮想環境を抜ける時 
$ deactivate

・プロジェクトのスタート


$ django-admin startproject <project名> . #ドットをつけると今いる場所にmanage .pyも作成される。
$ pip3 install gunicorn
$ cd <project名>
 #settings .pyの編集
$ vim settings.py

ALLOWED_HOSTS = ['IPアドレスを入れる!!']

 #run  serverの実行
$ python3 manage.py runserver #local環境の時 
$ gunicorn --bind 0.0.0.0:8000 <プロジェクト名>.wsgi#クラウドの時


IPアドレスを固定しないと毎回設定しなおす必要があるため注意!

アプリを作成するにはコマンドを打つ必要がある。(下を参照)

manage.pyがあるフォルダにプロジェクトとアプリがある。

最初にsetting.pyのALLOWED_HOSTSでアドレスの設定とTEMPLATESのDIRSでhtmlファイルの指定をする。INSTALLED_APPSで作成したアプリの名前を入れる。TEMPLATESで指定したhtmlファイルを入れるフォルダをmanage.pyがあるフォルダに作成する。最後にアプリとプロジェクトを関連付けるようにする。



・djangoの基本的な流れ

①ブラウザからのリクエストをprojectのurls.pyが受け取る。

②アプリのurls.py

➂アプリのviews.pyのクラスまたは関数が発動される。

④関数によってhtmlファイルが呼ばれ、そのhtmlファイルをブラウザに返す。


__init__.py→pythonのファイルが入っているということを認識させることができる

wsgi.py→webサーバーとアプリケーション(urls.py)の仲介役みたいな感じ

settings.pyに関して

・DEBUGは開発の時はTrueで本番環境の時はFalse

・ALLOWED_HOSTS はdjangoが受け取るサーバーのIPを指定する。クラウドで借りたインスタンスのIPアドレスを指定する。

・BASE_DIR→settings.pyまでのパスを表している。os.path.dirnameは1つ上のディレクトリを指している。そのためBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))これはmanage.pyが入っているディレクトリを指している。


・MIDDLEWARE→処理があったときに間に入って何かしてくれるもの。

・ROOT_URLCONF→最初にリクエストを受け取る場所を指定している。

・TEMPLATES→静的ファイル(HTMLファイル)をどこにしまっておくかを指定する。ここのDIRSのところにどこにHTMLファイルがあるのかを指定する。"DIRS":[BASE_DIR, "templates"]はBASE_DIRの"templates"というフォルダを探すという意味!なのでmanage.pyがあるフォルダに"templates"というフォルダを作成することでそこのフォルダを見に行くことになる。

・WSGI_APPLICATION→WSGIファイルの場所の指定

・DATABASES→データベースの設定


・AUTH_PASSWORD_VALIDATORS →パスワードのバリデーションの管理

時間とか言語とかの管理
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True


・STATIC_URL→CSSとかの設定をこれ以降に行う

URLS.pyに関して‥ブラウザからのリクエストはまずここが受けるみたいな感じ。そのあとにここに書かれた関数が発動みたいな。ここを書き直したら、views.pyも書き直す場合がほとんどなのでチェックするように!

urlpatternsがリクエストを受けてそこからいろいろ指示を出していく形になる。指示書みたいな感じ

path('admin/', admin.site.urls)

上のようになっているときは'admin/'がリクエストを受け取ってadmin.site.urlsこれが次の支持を出している。

IPアドレスに'admin/'これをつけてブラウザでリクエストを送るとadmin.site.urlsこの関数が発動する。


views.pyに関して

urls.pyからリクエストを受け取りレスポンスを返す.ここに関数やクラスを書いて定義をする。

クラスでtemplatenameを定義するとどのhtmlファイルを持ってくるのか定義することができる。


アプリに関して

プロジェクトとアプリの関係性に関してしっかりと理解する必要がある。

アプリを作成したときにはプロジェクトとアプリを連携する必要がある。連携するときは、アプリのほうにurls.pyを作成しプロジェクトのurls.pyと連携させることが一般的。

・manage.pyに関して→アプリケーションを作成するときに使用する。

アプリを作成するにはコマンドを打つ必要がある。manage.py ファイルがあるフォルダで、

 #アプリの作成 
$ python3 manage.py startapp <アプリの名前>
​

・アプリとプロジェクトを連携させるためにはプロジェクトのurls.pyでつなげるように設定をする必要がある。

path('hello/',include('helloworldapp.urls.py')

このようにすることによってプロジェクトのurls.pyで受け取ったらhelloworldappのアプリのurls.pyにリクエストすることができるようになる。



<アプリの中にあるファイルに関して>

・admin.py

管理画面との連携をする際に使用するもの。

管理画面に関して

python3 manage.py createsuperuserで設定をした後に、admin/で管理画面に入ることができる。


・models.py→データベースを操作する!!

データベースを操作するときに使用するファイル。コマンドでmakemigrationsとmigrateがあり、makemigrationsはデータベースとmodels.pyをつなげる役割があり、実際にデータベースを作成してデータを入れるときに使うコマンドがmigrate。0001はデータベースとmodels.pyの細かい設定を行う。migrateはデータベースにデータを書き込むコマンド0001のファイルをもとにデータを書き込む。

ちなみにコマンドを打つときは、python3 manage.py makemigrationsやpython3 manage.py migrateで行う。

models.pyをなにかしら変更した際には、makemigrationとmanage.pyを行って反映させるようにする!

フィールドをmodels.pyで定義した後、makemigrationをしてmigrateをすれば完成.

管理画面でデータをいじくるときにはアプリのadmin.pyで設定する必要がある。

画像を保存する場合はsettings.pyで保存先などを設定しなければならない。


・test.py

開発中にしっかりと動くのかをテストする際に使用する。

この記事が気に入ったらサポートをしてみませんか?