Open3

Django Windowsで開発(notVM)

stepstep

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

stepstep

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のシークレットキーをデプロイしたので注意がきたので、取り急ぎキーを更新した。本番ファイルは手動でキーのみ更新した。
→こういう場合のデプロイ方法を勉強すること!!