日和見軽太郎商会のブログ -2ページ目

日和見軽太郎商会のブログ

今日はヒマだし天気もイイし、クルマでもちょすとしますか!

「TestProject/applications/admin.py」へ追記
from .models import テーブルクラス
admin.site.register(テーブルクラス)

 

すると、「Django管理サイト」からテーブル単位となるが、

追加や変更、そして削除ができる。しかも変更履歴付です。

ただ、変更履歴も管理サイト以外のアプリケーションから

更新された履歴もあればよろしいのですが、それは贅沢?

また、複数列でプライマリキーを設定しているテーブルで

はエラーとなるので、内部連番を追加してプライマリキー

に設定し直すべきか?

 

既存のテーブルからmodels.pyを生成して流用できるらしい。

 

新規プロジェクト作成

$ source ~/django/bin/activate
$ django-admin startproject TestProject

$ cd TestProject


新規アプリケーション作成

$ python3 manage.py startapp applications

 

ディレクトリ「templates」作成

$ mkdir templates

 

「TestProject/TestProject/settings.py」を編集して環境を構成

1行目に追加
import os

下記の通り変更
##ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['*']

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

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        ##'DIRS': [],
        'DIRS': [os.path.join(BASE_DIR, 'templates'),],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

DATABASES = {
    'default': {
        ##'ENGINE': 'django.db.backends.sqlite3',
        ##'NAME': BASE_DIR / 'db.sqlite3',
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'DB名',
        'USER': 'UID',
        'PASSWORD': 'P/W',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}


##LANGUAGE_CODE = 'en-us'

LANGUAGE_CODE = 'ja-jp'
 

##TIME_ZONE = 'UTC'

TIME_ZONE = 'Asia/Tokyo'

 

モデルを作成する
$ python manage.py inspectdb >> applications/models.py
$ python manage.py makemigrations applications
$ python manage.py migrate

ココで問題発生!複数列でプライマリキーを指定できない様子

 

スーパーユーザーを作成

$ python manage.py createsuperuser
Username (leave blank to use 'UID'):
Email address:
Password:
Password (again):
Superuser created successfully.

 

 

既存のテータ、並びにFunctionやProcedure等のオブジェクトに影響はない様子

テーブルレイアウト等に変更が発生した場合、面倒か?

 

で、ココまで
$ deactivate

$ source ~/django/bin/activate

$ cd TestProject

 

ファイル「TestProject/applications/urls.py」を作成

$ cd applications

$ touch urls.py

 

「TestProject/applications/urls.py」の内容

from django.urls import path
from . import views
app_name = 'applications'
urlpatterns = [
    path('index/', views.IndexView.as_view(), name='index'),
]

 

「TestProject/applications/views.py」の内容

from django.shortcuts import render
# Create your views here.
from django.views.generic import TemplateView
class IndexView(TemplateView):
    template_name = 'index.html'

 

ディレクトリ「TestProject/templates」を作成

$ cd ..

$ mkdir templates

 

作成したディレクトリ「TestProject/templates」を検索できるよう

に「TestProject/TestProject/settings.py」を編集する

編集前

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

編集後

先ず、1行目に「import os」を追加する

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        ##'DIRS': [],
        'DIRS': [os.path.join(BASE_DIR, 'templates'), ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

 

「TestProject/templates/index.html」を作成

$ touch templates/index.html

 

「TestProject/templates/index.html」の内容

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Django Test</title>
    </head>
    <body>
        <h1>ジャンゴのテストじゃあ</h1>
    </body>
</html>

 

「TestProject/TestProject/urls.py」を編集

編集前
from django.contrib import admin
from django.urls import path

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

 

編集後
from django.contrib import admin
##from django.urls import path
from django.urls import include, path

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

 

確認

CTRL+cで停止して、コマンド実行

$ python manage.py runserver 0.0.0.0:8000

 

で、他のPCでブラウザ起動、「http://サーバーIPアドレス:8000/index」

を入力して表示できればヨシ。

 

とりあえず、ココまで

CTRL+cで停止

$ deactivate