Help us understand the problem. What is going on with this article?

Python Django チュートリアルのチュートリアル

More than 3 years have passed since last update.

Python Django チュートリアルのチュートリアルです.

djangoフレームワークを通じてpythonの勉強をし,
ついでにwebアプリ作成ができるようになることを目指します.

チュートリアルまとめ

なんかこの記事書いてる途中に公式っぽいチュートリアル,説明ページを見つけちゃいましたが,
気にせずに車輪の再開発をして行こうと思います.
http://eiry.bitbucket.org/tutorial/index.html

このページではpython環境の作り方やチュートリアルの進め方を説明していきます.

と,思いましたがpython環境の作り方については既に素敵なドキュメントがありましたので
その紹介と補足を行います.

windowsの方 → http://eiry.bitbucket.org/win/tutorial/installation.html
macの方 → http://eiry.bitbucket.org/mac/tutorial/installation.html

ちなみに私の環境は以下の通りです.

OS:Mac OSX10.11
python:3.4.2
django:1.8.5

上記のページにpython3.4系等のインストール,virtualenvのインストールの説明がありますが,
これに加えてvirtualenvwrapperもインストールしておくことをおすすめします.

wrapperの名の通り,virtualenvが若干使いやすくなります.

$ mkdir -p ~/PycharmProjects/practice  # 仮想環境用のディレクトリ用意
$ cd ~/PycharmProjects/practice/  # 用意したディレクトリに移動
$ virtualenv --python="`which python3.4`" virtualenv  # 仮想環境の作成
$ source virtualenv/bin/activate  # 有効化

という一連の操作がvirtualenvwrapperを使うと

$ mkvirtualenv practice  # 仮想環境作成
$ workon practive  # 有効化.(mkvirtualenvの後は実行する必要がない)

これだけでよくなります.
pathを通したり環境変数を設定したり,若干手間はかかりますがやっといて損はないです.

pathって何?って人はqiitaに素敵な記事があったので参考にどうぞ.
PATHを通すとは?
PATHを通すために環境変数の設定を理解する (Mac OS X)

ソースコードについて

チュートリアルのソースコードをgithubに置いています.
0からチュートリアルを眺めつつコードを書いていくのは大変なので是非活用してみてください.

githubの置き場
https://github.com/usa-mimi/tutorial

コマンドラインでの使用でも大丈夫ですが慣れるまで大変なので
SourceTreeなどのGUIツールを使用することをおすすめします.

こちらも使い方については何人かの方が書いてくれてるので紹介しときます.
Source Treeの使い方
SourceTree 設定手順 覚書【Windows】
SourceTreeから始めるGit

SourceTreeの操作を少しだけ説明しておきます.

githubからcloneしてくる

ソースコードの置き場所のことをリポジトリといいます.
まず最初にすることはgithub上のリポジトリを
自分のPCに持ってくることです.

この操作を「リモートのソースをローカルにcloneする」「リモートからローカルへcloneする」などと言います.

SourceTreeでは最初の画面で「URLからクローン」を選択してください.

スクリーンショット 2015-11-17 22.40.53.png

一度ブラウザでgithubのページを開いてclone用のURLをコピーして来てください.
画面の右側にリンクがあり,アイコンをクリックするとリンクがクリップボードにコピーされます.
# 直接これをコピーしてもいいです → https://github.com/usa-mimi/tutorial.git

スクリーンショット 2015-11-17 22.43.11.png

再びSourceTreeの画面を開き,ソースURLに先ほどのURLをペーストし,
保存場所を選択してクローンボタンを押すとローカルにソースコードがクローンされます.

Kobito.t0Cg2q.png

cloneして来たコードを動かしてみる

正常にclone出来ていれば,先ほどの保存場所に以下のような構成でファイルが展開されているはずです.

tutorial/  # gitでcloneした際にできるディレクトリ(SourceTreeで指定したディレクトリ)
    ├ .git/  # 隠しファイルなので設定によっては見えない
    ├ .gitignore  # 同上
    ├ ...
    └ tutorial/  # 説明は特に注釈がない限りここをrootとして説明します
          ├ manage.py  # djangoのコマンドを実行する時に指定する
          ├ requirements.txt  # pipでinstallすべきライブラリ一覧
          ├ db.sqlite3 #  migrateコマンドを実行すると作成されます.clone直後は存在しません.
          ├ ...
          └ tutorial/
                ├ ...
                ├ urls.py  # projectのURL
                └ settings.py  # projectの設定ファイル

必要なpythonライブラリのinstall

terminal(プロンプト)で適当な名前の仮想環境を作成し,2つ目のtutorial ディレクト
(manage.pyがあるディレクトリ)に移動し,以下のコマンドの実行してください.

(tutorial) $ pip install -r requirements.txt

ちなみにrequirements.txtの中身は$ pip freezeコマンドの出力結果です.

databaseの作成

migrateコマンドを実行してdbを作成してください.
manage.pyと同じ階層にdb.sqlite3というsqlite用のデータベースファイルが作成されます.

(tutorial) $ ./manage.py migrate

実行

以下のコマンドを実行した後でブラウザで http://localhost:8000 にアクセスすることで動作が確認できます.
# この辺の内容はチュートリアルでも説明します.

(tutorial) $ ./manage.py runserver

ソースコードを眺める

branchはmasterdevelopの2つで進めています.
masterブランチのコミットはどこでチェックアウトしても runserver で動作が確認できます.
developブランチは編集内容を細かくコミットしているので場所によっては動かないことがあります.

スクリーンショット 2015-11-17 23.25.43.png

①にはコミット一覧が表示されています.
左側に○の並びが2列ありますが,左側がmasterブランチ,右側がdevelopブランチです.

②はひとつ前のコミットからの変更ファイル一覧が表示されます.

「同じブランチの」ひとつ前のコミットとの差分です

○ ┐ # 今ここのコミットにいる
│ ● # ここの差分ではない
│ ●
│ ●
│ ●
○ ┤ # こことの差分
│ ●

③は②で選択したファイルの変更内容です.
追加した行は緑色,削除した行は赤色で表示されます.

ソースコードの切替

①の部分の適当な行をダブルクリックするとそこへHEADが移動します.
チュートリアルでは ソース: 7f5128a→3efdc15 のようにどのコミット(タグ)から初めて
最終的にどのコミット(タグ)になったかを書いてます.

チュートリアルを途中から始めたい場合はこのハッシュ値(もしくはタグ)を参考にしてソースコードを切り替えてください.

切替後は $ ./manage.py migrate を忘れずに実行してください.
# db.sqlite3ファイルを消した後に実行すると確実ですが,入力したデータが消えます.

ソースコードを試しに編集した後で元に戻したくなった場合,
ターミナルで $ git reset --hard HEAD と打つと元に戻ります.

変更内容は全部消えます.
編集した内容を残したい場合は適当なブランチを切った上でコミットしてください.

python2系統を使っている方へ

djangoはpython2でも3でも問題なく動作しますが,日本語を使用する際に少し面倒な記述が必要だったり,
文字列の取り扱い方の違いで書き方が変わったりしますので,できるだけpython3を使うようにしてください.

virtualenvで仮想環境を作成する時に使用するpythonを選択可能なので,その時にpython3を指定してあげるといいです.
例えば私のPCにはpython2と3の両方が入っており,pythonだけで実行するとpython2.7.9が使われます.
しかし,仮想環境を作成する時にpython3を指定することで実行されるpythonのバージョンが変更されます.

$ python2 -V
Python 2.7.9

$ python3 -V
Python 3.4.2

$ python -V  # python を実行すると python2 が実行される
Python 2.7.9

$ mkvirtualenv tutorial -p python3  # python3を指定してtutorial環境を作成
...
(tutorial)$ python -V  # pythonを実行すると python3 が実行される
Python 3.4.2

python2で文字コードエラーが出た場合の対応方法

$ ./manage.py 
... # スタックトレース
SyntaxError: Non-ASCII character '\xe8' in file .../tutorial/polls/models.py on line 6, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

実行した時にこんな感じのエラーが出たら文字コード関連のエラーです.

ファイル内で日本語を使用する場合はファイル先頭に以下の行を追加してください.
# -*- coding: utf-8 -*-

windowsのメモ帳などでソースを書いている人は文字コードがshift-jisなので
# -*- coding: sjis -*-
と書いてください.

また,日本語文字を変数に代入したり引数で使用する際には,文字列がユニコードであることを示すためにuを付けてください.

s = '日本語文字`  # python3ではOK,python2だとエラーになる

s = u'日本語文字`  # OK

f(u'引数')  # 引数に渡す文字も同様


チュートリアルまとめ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away