djangoのプロジェクトのスタートが終わったところから、modelsの実装、そしてhtml側での表示までをやってみます。

・django2.2
・python3.8
環境ができたところで
$django-admin startproject myapp
myapp/
manage.py
myapp/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
myappプロジェクトが作成できたら下記コマンドを実行します。
$python manage.py runserver
にアクセスし、下記画面が出ていればOKです。

ここからスタートします。
コンテンツ
my_friendアプリの作成
まずはアプリを作成します。
プロジェクトとアプリの違いに関しては公式から確認下さい↓
https://docs.djangoproject.com/ja/1.11/intro/tutorial01/
それではコマンドを打ち込みます。
$python manage.py startapp my_friend
こんなディレクトリ構造でアプリが生成されました。
my_friend/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
settings.pyの設定
まずは、my_friendアプリを作成したのでsettings.pyの下記場所にdjango-contrib.my_friendを追記します。
‘my_friend’だけでもいいのですが、これは古い書き方で細微な問題もありますので、my_friend.apps.MyFriendConfigのような書き方をします。
<settings.py>
INSTALLED_APPS = [
'my_friend.apps.MyFriendConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
言語も下記のように変えておきます。
LANGUAGE_CODE = 'en-us' ↓ LANGUAGE_CODE = 'ja'
時刻も日本時間に変更します。
TIME_ZONE = 'Asia/Tokyo'
Friendモデルクラスの作成
友達登録フォームなので、このような形にします。
<my_friend/models.py>
from django.db import models
class Friend(models.Model):
name = models.CharField(max_length=100)
mail = models.EmailField(max_length=100)
gender = models.BooleanField()
age = models.IntegerField(default=10)
birthday = models.DateField()
def __str__(self):
return '<Friend:id' + str(self.id) + ',' + self.name + str(self.age) + ')>'
そしてマイグレーションをします。
% python manage.py makemigrations
Migrations for 'my_friend':
my_friend/migrations/0001_initial.py
- Create model Friend
これでマイグレーションファイルを作成できました。
続いてマイグレーションの実行します。イメージとしてはマイグレーションで生成したファイルを使えるように本体に流し込むイメージです。
% python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, my_friend, sessions
Running migrations:
Applying contenttypes.0001_initial… OK
Applying auth.0001_initial… OK
Applying admin.0001_initial… OK
Applying admin.0002_logentry_remove_auto_add… OK
Applying admin.0003_logentry_add_action_flag_choices… OK
Applying contenttypes.0002_remove_content_type_name… OK
Applying auth.0002_alter_permission_name_max_length… OK
Applying auth.0003_alter_user_email_max_length… OK
Applying auth.0004_alter_user_username_opts… OK
Applying auth.0005_alter_user_last_login_null… OK
Applying auth.0006_require_contenttypes_0002… OK
Applying auth.0007_alter_validators_add_error_messages… OK
Applying auth.0008_alter_user_username_max_length… OK
Applying auth.0009_alter_user_last_name_max_length… OK
Applying auth.0010_alter_group_name_max_length… OK
Applying auth.0011_update_proxy_permissions… OK
Applying my_friend.0001_initial… OK
Applying sessions.0001_initial… OK
これでDBを操作できる準備は整いました。
管理ツールからFriendを登録してみる
my_friend/admin.py
from django.contrib import admin from .models import Friend admin.site.register(Friend)
これで管理ツール側でDBを操作できるようになります。
管理ツールに入り操作する
管理ツールを使うためにも、スーパーユーザーを作成する必要があります。
下記コマンドで作成します。Usernameやpasswordを聞かれると思いますので設定してください。
% python manage.py createsuperuser
設定ができたら早速ログインしてみます。
にリダイレクトし、先ほど設定したUsernameとPASSでログインします。

そして早速何か登録してみます。

右下のSAVEを押して、サクセスできれば一先ずOKです。

htmlに表示する
最初にパスの設定を行います。
myapp/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('my_friend.urls')),
]
my_friend/urls.py
from django.urls import path
from . import views
app_name = 'my_friend'
urlpatterns = [
path('', views.index, name='index'),
]
my_friend/views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import Friend
def index(request):
# get時
if request != 'POST':
data = Friend.objects.all()
context = {
'title': '友達のデータ',
'message': '登録一覧になります',
'data': data,
}
return render(request, 'my_friend/index.html', context)
またmy_friendアプリ直下にtemplatesディレクトリとindex.htmlファイルを作成します。ディレクトリ構造は下記になります。
my_friend/templates/my_friend/index.html
そして、index.htmlに作成したファイルを表示できるかと思います。
{% load static %}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>{{title}}</title>
<link rel="stylesheet" href="{% static 'my_friend/css/style.css' %}" />
</head>
<body>
<h1>{{title}}</h1>
<p>{{data}}</p>
</body>
</html>
※文字化けが対応できておりません。< は全て < となります。
cssも作成します。
パスは
my_friend/static/my_friend/css/style.css
body{ color: gray; margin: 20px; }
h1{ color: #ff0000; opacity: 0.3; font-size: 36px; }
p{ margin: 10px; }
a{ color:blue; text-decoration: none; }
それではhttp://localhost:8000/ へアクセスしてみます

とりあえず、表示ができました。先ほど管理ツール箇所で登録した内容がうまく表示されています。
長くなったのでこの記事はここでストップします。
次回は、ここからhtml側でデータの登録を行うコードを書いていきます。



コメントを残す