2017年4月27日木曜日

Djangoやってみる。

2,3年ぐらい前に、プログラマーのバイトでPythonとDjangoを使った開発に参加しました。
もう過去の話でどんなんだったか、思い出せないので久しぶりにDjangoのチュートリアルでもやって懐かしもうと思います。

おすすめチュートリアルとして、以下のチュートリアルを見つけたのでそれをやります。

ちなみに公式のチュートリアルもあります。
これは昔やった記憶がうっすらとあるので今回はパス。

内容は実際のチュートリアルを見てもらうほうが分かりやすくて良いともいます。
なので、ここではざっくりとやりながら取ったメモ書きを張るだけにします。

Django -------------------------------------------------------------------------
仮想環境(開発環境)作成
    $ python -m venv myvenv

開発環境の開始
    $ . myvenv/bin/activate
    行頭に(myvenv)が現れる
    $ deactivate        # 環境停止

Djangoインストール
    $ pip install django==1.10
    Successfully installed django-1.10
    $ pip list
    Django (1.10)
    pip (9.0.1)
    setuptools (28.8.0)

Django プロジェクト ------------------------------------------------------------
Djangoプロジェクトの作成
    $ django-admin startproject mysite .

タイムゾーンの変更
    mysite/settings.pyの以下の箇所を変更する
    befor:
        TIME_ZONE = 'UTC'
        USE_TZ = True
    after:
        TIME_ZONE = 'Asia/Tokyo'
        USE_TZ = False
    補足:DBの設定は同ファイル内の以下の箇所で設定している
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }

DBのマイグレーション
    $ python manage.py migrate

サーバーの起動
    $ python manage.py runserver 192.168.55.2:8000
    Webブラウザでhttp://192.168.55.2:8000/にアクセスすると「It worked!」と表示される

アプリケーションの作成
    $ python manage.py startapp blog

Djangoにアプリケーションを認識させる
    mysite/settings.pyの以下の箇所を変更する
    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

データベースにモデル用のテーブルを作る
    データベースに入れる為の移行ファイルを作成
    $ python manage.py makemigrations blog
    データベースへ反映
    $ python manage.py migrate blog

作成したポストを追加、編集、削除用Django adminページの設定
    blog/admin.pyを以下のように編集
    from django.contrib import admin
    from .models import Post

    admin.site.register(Post)

Django admin ログイン用ユーザ(superuser)作成
    $ python manage.py createsuperuser
    Username (leave blank to use 'vagrant'): admin
    Email address: admin@admin.com
    Password:admin12345

サーバーを起動しDjango adminにログイン
    $ python manage.py runserver 192.168.55.2:8000
    以下のURLにアクセス
    http://192.168.55.2:8000/admin/

    POSTとかを試してみる。
    Blog/Postsでデータの登録とかできるよ。


長くなるので、今回はここまでにします。
次はHerokuへのデプロイから(/・ω・)/

0 件のコメント:

コメントを投稿