4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Djangoの使い方~オブジェクト作成編~

Last updated at Posted at 2019-03-19

##はじめに
Djangoの使い方~ウェブサイト作成編~の続きです。

この章ではログインページを作っていきます。

##ふりかえり
今いるディレクトリの確認方法

comand-line
$ C:\Users\Name> cd

djangogirlsディレクトリへの移動方法

comand-line]
$ C:\Users\Name> cd djangogirls

仮想環境の実行方法

comand-line
$ C:\Users\Name\djangogilrs> myvenv\scripts\activate

##新しいアプリケーションの作成

djangogirlsディレクトリで下のコマンドを実行します

comand-line
$ (myvenv) C:\Users\Name\djangogirls> python manage.py startapp blog

新しくブログディレクトリが作られます。こんな感じです。
djangogirls ├── blog │   ├── __init__.py │   ├── admin.py │   ├── apps.py │   ├── migrations │   │   └── __init__.py │   ├── models.py │   ├── tests.py │   └── views.py ├── db.sqlite3 ├── manage.py ├── mysite │   ├── __init__.py │   ├── settings.py │   ├── urls.py │   └── wsgi.py └── requirements.txt

コードエディタでmysite/settings.pyを開いてください。
INSTALLED_APPS を見つけて ] の上に 'blog' という一行を追加します。こんな感じです。

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 をエディタで開いて全部削除し、下のコードをコピペして下さい。

blog/models.py
from django.db import modelsfrom
from django.utils import timezone


class Post(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    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

※strの横はダブルアンダースコア(__)です。

ざっくりと上のコードでやってること

コード 役割         
from...import... 他のファイルから引用する
class Post(models.Model): 今回のモデルを定義(オブジェクト)
models.CharField 文字数が制限されたテキストを定義
models.TextField 制限無しの長いテキスト用
models.DateTimeField 日付と時間のフィールド
models.ForeignKey 他のモデルへのリンク
def publish(self): 今回作るブログを公開するメソッド
_str_() ポストのタイトルのテキストを返す
##データベースにモデルのためのテーブルを作成する

コンソールで python manage.py makemigrations blogを入力。
下のようになります。

command-line
$(myvenv) ~/djangogirls > python manage.py makemigrations blog
Migrations for 'blog':
  blog/migrations/0001_initial.py:


  - Create model Post

Djangoが作ってくれた移行ファイルをデータベースに追加する。
コンソールでpython manage.py migrate blogを入力。
下のようになります。

command-line
$(myvenv) ~/djangogirls > python manage.py migrate blog
Operations to perform:
  Apply all migrations: blog
Running migrations:
  Applying blog.0001_initial... OK

これでポストモデルがデータベースに入りました!

##Django admin
今作成したポストを追加、編集、削除するのにDjango adminを使います。
blog/admin.pyファイルをエディタで開き、内容を下記に変えてください。

blog/admin.py
from django.contrib import adminfrom .models import Post

admin.site.register(Post)

admin.site.register(Post)→モデルをAdminページ(管理画面)上で見えるようにするためのコード

最後にログインページを確認します。コンソールで下を入力。

command-line
$ (myvenv) ~/djangogirls > python manage.py runserver

上を入力後ここを検索

この画面が出てきたら成功です!
キャプチャ.PNG

##おわりに
次回はデプロイの準備をします!
次回→Djangoの使い方~デプロイ編①~

4
1
2

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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?