◆前回
前記事では、仮想環境を構築し、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
コメント