Adsenseコード

2017-09-25

【Django入門】Mac環境にDjangoを導入する2(アプリケーション作成)




◆前回


前記事では、仮想環境を構築し、Djangoをインストール、
プロジェクトの作成とDB設定まで行いました。
【Django入門】Mac環境にDjangoを導入する1(環境構築とプロジェクト作成)


Djangoでは、プロジェクトーアプリケーション という構造をしています。
本記事では、作成したプロジェクトにアプリケーションを作成する作業を行います。




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


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


作成した仮想環境のディレクトリまで移動し、以下を実行します
myvenv user$ python3 manage.py startapp blog
$ tree -L 1 .
.
├── bin
├── blog
├── db.sqlite3
├── include
├── lib
├── manage.py
├── myapp
├── pip-selfcheck.json
└── pyvenv.cfg




■myapp/settings.pyファイルの編集


使用するアプリケーションをDjango上で定義します

```
# Application definition
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
```




■マイグレーションファイルの作成


$ python3 manage.py makemigrations blog
Migrations for 'blog':
  blog/migrations/0001_initial.py
    - Create model Post




■マイグレーションの実行


$ python3 manage.py migrate blog
Operations to perform:
  Apply all migrations: blog
Running migrations:
  Applying blog.0001_initial... OK




■Django adminの設定


blog/admin.pyファイルを下記に変更します

```
from django.contrib import admin
from .models import Post

# Register your models here.
admin.site.register(Post)
```




■superuser (サイトの管理者) の作成


$ source ./bin/activate
$ python manage.py createsuperuser
Username (leave blank to use 'sko'): admin
Email address: # メールアドレスを設定
Password: # パスワードを入力
Password (again): # パスワードをもう一度入力
Superuser created successfully.




■動作確認


以下にアクセスし、設定したユーザ名とパスワードを入力して
ログインできることを確認します。
http://127.0.0.1:8000/admin/blog/

※もちろんサーバを起動しておくことを忘れないでください





◆ルーティングの設定


■myapp/urls.pyの設定


以下のように設定します

```
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('blog.urls')),
]
```




■blog/urls.pyの作成


blog/urls.pyという空ファイルを作成し、以下のように編集します

```
from django.conf.urls import url
from . import views

urlpatterns = [
    # 'http://127.0.0.1:8000/'へのアクセスは views.post_list を返す
    url(r'^$', views.post_list),
]
```




■Viewの作成


blog/views.pyを下記の内容で作成します

```
from django.shortcuts import render

# Create your views here.
def post_list(request):
    return render(request, 'blog/post_list.html', {})
```




■Templateの作成


Template用のディレクトリを作成します

$ mkdir blog/templates
$ mkdir blog/templates/blog


ここへpost_list.html を作成します

```
<html>
    <p>Hi there!</p>
    <p>It works!</p>
</html>
```




■動作確認


下記にアクセスします。
http://127.0.0.1:8000/


すると、下記の html ファイルを表示します
/Django_app/myvenv/blog/templates/blog/post_list.html




参考
https://qiita.com/yoshizaki_kkgk/items/c9a5299b77b99ff07e4a






0 件のコメント:

コメントを投稿