LoginSignup
0
0

More than 5 years have passed since last update.

Djangoの一連の操作

Posted at

はじめに

自分用の備忘録です。

プロジェクト関連の操作

プロジェクトの作成

startproject
python manage.py startproject mysite

アプリケーション関連の操作

アプリケーションの作成

startapp
python manage.py startapp games

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

アプリケーションの追加をdjangoに教える必要があります。

mysite/settings.py
(省略)
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'games', #ここに追記
]
(省略)

モデルを定義

アプリケーション内にモデルを追加します。
Railsと違い、import句ぐらいしか自動生成されないので、0から自身で記載する必要があります。

mysite/games/models.py
from django.db import models

class Game(models.Model): #モデル名は単数形で!
    title  = models.CharField(max_length=200)

    def __str__(self):
        return self.title

マイグレーションの作成

モデル定義を元にマイグレーションを作成します。
マイグレーションを作成する対象のアプリケーションを指定します。

makemigrations
python manage.py makemigrations games
Migrations for 'games':
  games\migrations\0001_initial.py
    - Create model Game

adminサイトでモデルを有効化する

管理サイトにアクセスするとモデルを編集できるようになります。

mysite/games/admin.py
from django.contrib import admin

from .models import Game

admin.site.register(Game)

URLマッピングを設定

まず、mysiteのurls.pyにgames.urlsへの参照を追加します。

mysite/mysite/urls.py
from django.urls import path, include
from django.contrib import admin

from django.contrib.auth import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/login/', views.LoginView.as_view(), name='login'),
    path('accounts/logout/', views.LogoutView.as_view(next_page='/'), name='logout'),
    path('games/', include('games.urls')),
]

続いて、gamesのurls.pyにURLマッピングを追加します。

mysite/games/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

ビューの定義

mysite/games/views.py
from django.shortcuts import render

from .models import Game

def index(request):
    games = Game.objects.all
    return render(request, 'games/index.html', {'games': games})

テンプレートの定義

mysite/games/templates/games/index.html
{% extends 'games/base.html' %}

{% block content %}
    {% for game in games %}
        <div class="game">
            <div class="title">
                <p>title: {{ game.title }}</p>
            </div>
        </div>
    {% endfor %}
{% endblock %}
mysite/games/templates/games/base.html
{% load static %}
<html>
    <head>
        <title>Django Girls blog</title>
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
        <link href='//fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
        <link rel="stylesheet" href="{% static 'css/games.css' %}">
    </head>
    <body>
        <div class="page-header">
            <h1><a href="/">Hello Django</a></h1>
        </div>
        <div class="content container">
            <div class="row">
                <div class="col-md-8">
                {% block content %}
                {% endblock %}
                </div>
            </div>
        </div>
    </body>
</html>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0