Edited at

0からのDjango開発環境構築から基本操作まで

More than 3 years have passed since last update.

備忘録&身内用なのでかなり簡略的に書いてあります。初学者は他の記事も参考にするべきだと思います。


バージョンの注意

ここでは主にpython 2.7.10, Django 1.6で作業した。

python 3系, Django1.9で作業する時は下記の点に注意

$ pyenv install時に適切なバージョンを選択する

$ pip install django時に適切なバージョンを選択する。(デフォルトで最新の1.9が入る)

Django1.6だと モデル書いてから $ python manage.py syncdb 一発でデータベースが作成される感じ。

1.9だとモデル書いてから

$ python manage.py makemigrations アプリ名 でマイグレーションファイル作ってから

$ python manage.py migrateでマイグレーションファイルからDBを作成する感じ。

以上(たぶん)。


1. 環境構築


1-1.pyenv をインストール

GitHubからインストール

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv

(~/.pyenvはローカルのディレクトリ名。適当な名前にする)

pyenvの設定をzshenv、bash_profile等に書き込む。

export PYENV_ROOT=$HOME/.pyenv

export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"

($HOMEはpyenvのインストール場所に適宜書き換える)

Shellを再起動して設定を反映させる。

$ exec $SHELL


1-2. pythonのインストール

pyenvからpythonをインストールする。

$ pyenv install 2.7.10

インストールしたバージョンをセット。

$ pyenv global 2.7.10

$ pyenv rehash

確認

$ pyenv versions

* 2.7.10 (set by /hoge/.pyenv/version)


1-3. Djangoのインストールとテストプロジェクト作成

pip からDjango1.6のインストール

$ pip install django==1.6

テストプロジェクト作成

$ django-admin.py startproject mysite

サーバー起動

$ cd mysite

$ python manage.py runserver

http://localhost:8000 にアクセスし、サーバーが動いてるか確認する。


2. Djangoのテストプロジェクト


2-1. 基本的な使用方法

主な参照 はじめての Django アプリ作成、その 1 | Django 1.4 Documentation


設定ファイル(setting.py)の編集

DBに関する設定を変更する。デフォルトではsqliteが使われる設定だが、今回はPostgreSQLを使用する。

参照 DjangoでPostgreSQLを使えるようにしたときのメモ | Qiita

上記サイトを参考にpostgresqlのライブラリなどをインストールし、新しいユーザーとデータベースを作成したと仮定。

setting.py

DATABASES = {

'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mysite',
'USER': 'djangouser',
'PASSWORD': 'pass',
'HOST': '127.0.0.1',
'PORT': 5432,
}
}


テーブルの作成

下記コマンドを実行することでsetting.py中の INSTALLED_APPSに記述されているアプリケーションで使われるテーブルを作成する。

$ python manage.py syncdb

(syncdb コマンドは INSTALLED_APPS 設定を探し、 settings.py のデータベース設定に従ってデータベース上に必要なテーブ ルを作成する。)


アプリケーションの作成

$ python manage.py startapp polls

(pollsはアプリケーション名)


モデルの作成


polls/models.py

from django.db import models

class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')

class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(max_length=200)
votes = models.IntegerField()



プロジェクトにpollsアプリを認識させる

プロジェクトにpollsアプリを認識させるために設定を書き換える。

INSTALLED_APPS内にpollsを追加。


setting.py

INSTALLED_APPS = (

'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'polls',
)


作成したモデルからSQLを表示させる

$ python manage.py sql polls

BEGIN;
CREATE TABLE "polls_poll" (
"id" serial NOT NULL PRIMARY KEY,
"question" varchar(200) NOT NULL,
"pub_date" timestamp with time zone NOT NULL
)
;
CREATE TABLE "polls_choice" (
"id" serial NOT NULL PRIMARY KEY,
"poll_id" integer NOT NULL REFERENCES "polls_poll" ("id") DEFERRABLE INITIALLY DEFERRED,
"choice" varchar(200) NOT NULL,
"votes" integer NOT NULL
);
COMMIT;


モデルからSQL文を発行し、DBに書き込む

$ python manage.py syncdb


Python の対話シェルでDjangoのAPIを遊ぶ

参照 はじめての Django アプリ作成、その 1 | Django 1.4 Documentation のAPIで遊んでみるより。

pythonの対話シェルを起動する。



$ python manage.py shell



(上記サイトを参考にして色々遊ぼう)

ちなみに遊ぶ過程でpolls/models.pyを下記のように書き換えた。


polls/models.py

import datetime

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

class Poll(models.Model):

question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')

def __unicode__(self):
return self.question

def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

class Choice(models.Model):

poll = models.ForeignKey(Poll)
choice = models.CharField(max_length=200)
votes = models.IntegerField()

def __unicode__(self):
return self.choice