◆前回

前記事では、仮想環境を構築し、Djangoをインストール、
プロジェクトの作成とDB設定まで行いました。
【Django入門】Mac環境にDjangoを導入する1(環境構築とプロジェクト作成)

Djangoでは、プロジェクトーアプリケーション という構造をしています。
本記事では、作成したプロジェクトにアプリケーションを作成する作業を行います。

 

◆アプリケーションのインストール

 

■アプリケーションインストール

作成した仮想環境のディレクトリまで移動し、以下を実行します
myvenv user$ python3 manage.py startapp blog
$ tree -L 1 .
.
├── bin
├── blog
├── db.sqlite3
├── include
├── lib
├── manage.py
├── myapp
├── pip-selfcheck.json
└── pyvenv.cfg

 

■myapp/settings.pyファイルの編集

使用するアプリケーションをDjango上で定義します

“`
# Application definition
INSTALLED_APPS = (
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘blog’,
)
“`

 

■モデルの作成

blog/models.pyのファイルを以下のように編集します

“`
from django.db import models
from django.utils import timezone

class Post(models.Model):
author = models.ForeignKey(‘auth.User’)
title  = models.CharField(max_length=200)
text   = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)

def publish(self):
self.published_date = timezone.now()
self.save()

def __str__(self):
return self.title
“`

 

■マイグレーションファイルの作成

$ python3 manage.py makemigrations blog
Migrations for ‘blog’:
blog/migrations/0001_initial.py
– Create model Post

 

■マイグレーションの実行

$ python3 manage.py migrate blog
Operations to perform:
Apply all migrations: blog
Running migrations:
Applying blog.0001_initial… OK

 

■Django adminの設定

blog/admin.pyファイルを下記に変更します

“`
from django.contrib import admin
from .models import Post

# Register your models here.
admin.site.register(Post)
“`

 

■superuser (サイトの管理者) の作成

$ source ./bin/activate
$ python manage.py createsuperuser
Username (leave blank to use ‘sko’): admin
Email address: # メールアドレスを設定
Password: # パスワードを入力
Password (again): # パスワードをもう一度入力
Superuser created successfully.

 

■動作確認

以下にアクセスし、設定したユーザ名とパスワードを入力して
ログインできることを確認します。
http://127.0.0.1:8000/admin/blog/

※もちろんサーバを起動しておくことを忘れないでください

◆ルーティングの設定

 

■myapp/urls.pyの設定

以下のように設定します

“`
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
url(r’^admin/’, include(admin.site.urls)),
url(r”, include(‘blog.urls’)),
]
“`

 

■blog/urls.pyの作成

blog/urls.pyという空ファイルを作成し、以下のように編集します

“`
from django.conf.urls import url
from . import views

urlpatterns = [
# ‘http://127.0.0.1:8000/’へのアクセスは views.post_list を返す
url(r’^$’, views.post_list),
]
“`

 

■Viewの作成

blog/views.pyを下記の内容で作成します

“`
from django.shortcuts import render

# Create your views here.
def post_list(request):
return render(request, ‘blog/post_list.html’, {})
“`

 

■Templateの作成

Template用のディレクトリを作成します

$ mkdir blog/templates
$ mkdir blog/templates/blog

ここへpost_list.html を作成します

“`
<html>
<p>Hi there!</p>
<p>It works!</p>
</html>
“`

 

■動作確認

下記にアクセスします。
http://127.0.0.1:8000/

すると、下記の html ファイルを表示します
/Django_app/myvenv/blog/templates/blog/post_list.html

参考
https://shige-mon.blogspot.com/2017/09/django-startapp.html
 
https://qiita.com/yoshizaki_kkgk/items/c9a5299b77b99ff07e4a