2015年2月28日土曜日

Djangoでhello world

環境

OS:Ubuntu14.04
Python 3.4.0

Pythonのバージョンを確認

Python2のバージョンを確認

python

Python3のバージョンを確認

python3

django1.7をインストールする

pipをインストール

sudo apt-get install python3-pip

djangoをインストール

sudo pip3 install django


djangoのテストアプリケーションを作成する

プロジェクトを置く場所に移動

cd ~/python/test

プロジェクトとアプリケーションの作成

django-admin startproject AppTest

ちなみに、ここで「django-admin startproject test」とやったら「CommandError: 'test' conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name.」testは既存のPythonモジュールの名前と競合するから、プロジェクト名として使うことができません。違う名前つけてね。と怒られました。

アプリケーションの実行

cd AppTest/
python3 ./manage.py runserver

runserverすると、アプリケーションが起動状態になります。
ブラウザでhttp://127.0.0.1:8000/を開くと起動中のアプリケーションの画面を見ることができます。

起動するとログに
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
と赤文字があります。
未適用のマイグレーションがあります。適切に適用するまで、あなたのアプリケーションはおそらく動かないでしょう。
それらを適用するために'python manage.py migrate'を実行してください。

と書かれているので実行します。

python3 manage.py migrate
して、DBをマイグレート(データベースマイグレーション)してから
python3 ./manage.py runserver
するとログの赤文字が消えてます。

これは、djangoが内部で使用するテーブルが存在しないため、発生していました。

やっているといろいろ出てきた用語とか


  • pypi … Pythonの公式が管理しているライブラリ集(個人が自由にライブラリを投稿できる場所)
  • pip … パッケージマネージャーの一つ。Pythonのライブラリ集からライブラリを持ってきてくれる機能。デフォルトではpypiを見ている。URLを指定すれば、Githubなど、どこからでもライブラリを持ってこれる。
  • Python2系と3系 … マシンに両方入っているとき「python」コマンドは2系が使われて「python3」コマンドは3系が使われる
  • データーベースマイグレーション … DBのscheme(DBの定義)を最新の状態にすること
  • djangoの基本的な考え方としては、1プロジェクトの中に複数のアプリケーションを持つことができる


Exception:
(省略)
PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.4/dist-packages/Django-1.7.5.dist-info'

な感じで「Permisstion denied」と表示されたときは、実行したいことに権限が無いときに出るエラーなので、sudoをつけて実行する。