nprogram’s blog

気ままに、プログラミングのトピックについて書いていきます

Django学習 (Djangoサーバー作成とDjango上でアプリケーション実行)

はじめに

Djangoの環境を構築するための学習内容を記載します。

環境

  • Windows 10 (version 1809)
  • Python version : 3.7.1
  • Django version : (2, 1, 7, 'final', 0)

注意点

  • 現在どのディレクトリ階層にいるか、コマンド実施前に必ず確認しましょう (コマンドcdで確認)
  • 現在のディレクトリ階層直下のファイルを把握しましょう (コマンドdirで確認)
  • Djangoサーバーへのアクセスは、httpは可能ですが、httpsでは本記事では実施できません。

Djangoのプロジェクトを作成する

  1. Pythonのインストール インストールディレクトリがわからなくなった場合は、Pythonをアンインストール後、Pythonをディレクトリ指定でインストールします。 そのとき、環境設定にPATHも通すことができるため、PATHも通しましょう。

  2. Pythonのバージョン確認 (python --version)

  3. Pythonのインストールディレクトリ確認(where python)

  4. 仮想環境(virtual environment (virtualenv))のインストール (python -m venv temp)

  5. ディレクトリ移動 (cd temp)

  6. 仮想環境を使用する (Scripts\activate)

  7. pipを最新版にする (python -m pip install --upgrade pip)

  8. Djangoのモジュールをインストールする (pip install Django)

  9. モジュールバージョンを確認する (pip list)

  10. プロジェクトを作成する (django-admin startproject myapp)

myapp
├── manage.py
└── myapp
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

Djangoのサーバーを起動する

  1. ディレクトリを移動する(cd myapp)

  2. Djangoのサーバーを起動する(python manage.py runserver)

  3. Webブラウザでhttp://localhost:8000/を入力する。

f:id:nprogram:20190223111042p:plain

アプリケーション作成して、実行する

bbsで簡単なメッセージを表示します。

(1) manage.pyが直下にいるディレクトリで、python manage.py startapp bbsのコマンドを実行する f:id:nprogram:20190223143122p:plain

(2) Webサーバーのメッセージに応じて、index関数がHello worldを返します。 HttpResponse関数を使用するため、importすること。

bbs/views.py

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return HttpResponse('Hello world')

(2) bbs/views.pyのプログラムを呼び出す用にルーティングする。 ルーティングは、WebサーバーのURLとプログラムを紐づける仕組み。 Djangoでは、プロジェクト全体とアプリケーションの2段階でルーティングを行う。

まず、プロジェクト全体のルーティングを行う。 myapp/urls.pyファイルは、urlresolverをつかったURLのパターンのリストを含んでいます。 urlspatternsリストの中でpath関数を呼び出す。path関数を呼び出しているため、includeすること。

urls.py

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('bbs/', include('bbs.urls'))
    path('admin/', admin.site.urls),
]

(3) bbsフォルダーの中に、urls.pyファイルを作成する 次にbbsアプリケーション側のルーティングを設定する。

bbs/urls.py

from django.urls import path
from . import views

urlpatterns = {
    path('', views.index, name='index')
}

(4) setting.pyを開いて、アプリケーションを登録する

INSTALLED_APPS = [
    'bbs.apps.BbsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

(5) サーバーを起動していなかったら、python manage.py runserverでサーバーを起動しましょう。

(6) Webブラウザでhttp://localhost:8000/bbsを入力する。Hello worldと表示される。

f:id:nprogram:20190223173130p:plain

スーパーユーザーの作成

次に、スーパーユーザーを作成します。ディレクトリの位置を確認しながら、実行しましょう。

(temp) C:\Users\uv2ut\PycharmProjects\temp\myapp>dir

 C:\Users\uv2ut\PycharmProjects\temp\myapp のディレクトリ

2019/02/23  20:40    <DIR>          .
2019/02/23  20:40    <DIR>          ..
2019/02/23  20:37                 7 .gitignore
2019/02/23  15:10    <DIR>          bbs
2019/02/23  14:24                 0 db.sqlite3
2019/02/23  14:22               552 manage.py
2019/02/23  14:24    <DIR>          myapp
2019/02/24  20:46               370 README.md
               4 個のファイル                 929 バイト
               4 個のディレクトリ  713,390,907,392 バイトの空き領域

(temp) C:\Users\uv2ut\PycharmProjects\temp\myapp>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying sessions.0001_initial... OK

(temp) C:\Users\uv2ut\PycharmProjects\temp\myapp>python manage.py createsuperuser
Username (leave blank to use 'uv2ut'): admin
Email address: abcd@abcd.com
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
This password is too common.
This password is entirely numeric.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

管理サイトの有効化

管理サイトを表示させてみましょう。

python manage.py runserver で開発用サーバを起動します。

http://127.0.0.1:8000/admin/ にブラウザでアクセスします。

初回の $ python manage.py createsuperuser で初期化したスーパーユーザー admin/hogefuga でログインします。

実行イメージ

f:id:nprogram:20190225080433p:plain

まとめ

今回は、コマンドベースで、Djangoサーバー作成。サーバー上でWebアプリケーション実行。管理サイトの表示まで実行しました。

IDEであるPyCharm上で開発できる方法も調べて記事にできればと思います。

補足

自動作成されたデータベースファイルは、こんな感じです。

DB.Browser.for.SQLiteは無料で使用できるため、データベースを確認するときはおすすめです。

f:id:nprogram:20190225081512p:plain

参考情報