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

##はじめに
[Djangoの使い方～ウェブサイト作成編～](https://qiita.com/aMMhEXi1gdZR9oq/items/0417768da7dd6e7ccfa3)の続きです。

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

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

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

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

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


仮想環境の実行方法

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


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


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


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

```ruby: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を入力。
下のようになります。


```ruby: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を入力。
下のようになります。

```ruby: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ファイルをエディタで開き、内容を下記に変えてください。


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

admin.site.register(Post)
```


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


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


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


上を入力後[**ここ**](\http://127.0.0.1:8000/admin/)を検索

この画面が出てきたら成功です！
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/376013/33d3b35f-4c93-af68-e10b-4f4dba05e8ca.png)

##おわりに
次回はデプロイの準備をします！
次回→[Djangoの使い方～デプロイ編①～](https://qiita.com/connecrew-sugiyama/items/ce5beafce9201736c39e)