Django Windowsで開発(notVM)
■WSL~Linuxインストールまで。
①Win10でWSLを有効化する方法
②ubuntuをインストールする
microsoft store -> ubuntu -> install
③VSCの拡張機能WSLを使用しubuntuと接続する
Django 環境構築 for ubuntu
■仮想環境の作成
・venvのインストール
sudo apt-get upgrade
apt install python3.8-venv → エラー
sudo apt update
apt install python3.8-venv → OK
・venvディレクトリの作成
python3 -m venv myvenv(任意の名前)
・上記(仮想環境)に入るコマンド
source myvenv/bin/activate
■Djangoを立ち上げる
・pipのインストール
sudo apt install python3-pip
・Djangoのインストール(今回は3.2入れる)
pip install django==3.2
■プロジェクト作成
django-admin startproject プロジェクト名
■アプリ作成
(プロジェクトディレクトリとmanage.pyと同じ階層で実行)
python3 manage.py startapp todo
■setting.pyの編集
1.アプリ名を追加
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'アプリ名を入力' #追加
]
2.htmlの格納場所を追加
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR, 'templates'], #BASE_DIR, 'templates'を追加
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
#以下省略
■htmlの格納場所を作成(上記2.の場所を作る)
ベースディレクトリ(プロジェクトディレクトリ、アプリディレクトリ、manage.pyと同じ階層)に移動
コマンド:mkdir templates
■urls.pyのマッピング
1.アプリのディレクトリに移動、urls.pyを作成する
2.プロジェクトのurls.pyの編集
from django.contrib import admin
from django.urls import path,include #includeを追加
urlpatterns = [
path('admin/', admin.site.urls),
path('',include('アプリディレクトリ.urls')) #追加 admin以外のURLのあればアプリのurls.pyに接続する。
]
3.アプリのディレクトリのurls.pyに上記からコピペして、includwは削除しておく。
初期段階はurlのマッピングが無いため、これをやっておかないとエラーになるため。
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
■models.pyの編集(DBテーブル作成)
テーブル(djangoではclassを使用)の作成
モデルの各属性(クラス変数)は、データベーステーブルのカラムに相当する。
例:
from django.db import models
class MyModel(models.Model):
my_field = models.CharField(max_length=100)
another_field = models.IntegerField()
■Djangoでモデルの変更をデータベースに適用するためマイグレーションを行う
1.モデルの変更を検出し、それらの変更に基づいて新しいマイグレーションファイルを生成。
コマンド:python manage.py makemigrations
※アプリ側のurls.pyおよびview.py作成して、マッピングしておかないとエラーになる。
2.生成されたマイグレーションファイルを使って、データベーススキーマを実際に更新。
コマンド:python manage.py migrate
結果:migrationディレクトリが作成される。その中に(初回の場合は)0001_initial.pyがあり、id+定義した各属性でテーブルが記載されている。
■スーパーユーザを作成し管理画面にログインする。
1.
python3 manage.py createsuperuser
Username (leave blank to use 'xxxx'): xxxx #設定
Email address:
Password: xxxxxxxx#設定
Password (again): xxxxxxxx#設定
localhost:8000/admin
1.で設定したユーザ、パスワードでログインする。
■models.pyで設定したテーブルを管理画面に反映させる。
1.admin.pyを編集する。
from django.contrib import admin
from .models import TodoModel #追加
Register your models here.
admin.site.register(TodoModel) #追加
2.localhost:8000/adminで画面を更新すると、models.pyで設定したデーブル(TodoModel)が管理画面に追加される。
■プロジェクト内のwebサーバー起動
python3 manage.py runserver
reCaptcha導入メモ
・まず、画面上部のv3 admin consoleをクリックする。
→初回登録後は、↑の次に、右上歯車アイコンをクリック。
・googleのreCaptchaサイト(https://www.google.com/recaptcha/)で、ドメインに開発時、デプロイ先両方登録する。開発環境にip振ってたら(192.168.xxx.xxなど)、/etc/hostsでドメイン登録をした上で、recaptcaに登録する。
・パッケージインストール方法について
(開発時)
pip install django-recaptcha
(デプロイ時)
pip install django-recaptcha
※詳細は下記参照。
■注意!!!!!
pythonanywhereでデプロイする際、pullしたあと必ず仮想環境に入ってから、
以下作業をする。
cd /home/マイサブドメイン名/マイサブドメイン名.pythonanywhere.com/ #PythonAnywhereのターミナルでプロジェクトのディレクトリに移動
git pull #ソース反映
workon (マイサブドメイン).pythonanywhere.com #仮想環境に入る
pip install django-recaptcha #reCAPTCHAパッケージインストール
python manage.py makemigrations #DB反映
python manage.py migrate #DB反映
python manage.py collectstatic #CSS反映
■githubでrecaptchaのシークレットキーをデプロイしたので注意がきたので、取り急ぎキーを更新した。本番ファイルは手動でキーのみ更新した。
→こういう場合のデプロイ方法を勉強すること!!