日記 Django チュートリアル で詰まったところ。

詰まったところだけ、かいつまんで。ほぼ、備忘録。ワイ氏の苦しんでる様を見て、優越感に浸れる記事です。内容は、Writing your first Django app, part 1 | Django documentation | Django に沿います。
 

イメージ

こんなテーブル構造を持つサイトを作りたいらしいです。
投票数は自由...ワイに100票やな
(追記)全然、理解が違った。恥ずかしい。「Poll 議題」に対して、複数の「選択肢 Choice」があって、その「選択肢 Choice」では投票数がカウントされる。みたいな。下の写真、恥ずかしい...。
f:id:domodomodomo:20140606172903j:plain
 

プロジェクトの作成

「さっそくプロジェクトを作ろう」というも、エラーで返される。

$ django-admin.py startproject mysite
-bash: django-admin.py: command not found
$ # (。-`ω-)ンー?
$ # Python ファイルまんま指定しても動かないのはあたりまえか...?

 

世の中には、パスと言う考え方があることを知る。
Django の django-admin.py でパスを通しても command not found の時 - Qiita

$ # Step1. 目的のファイルへのパスを探す。
$ sudo find / | grep django-admin
...
/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/django/bin/django-admin.py
....
$ 
$ # Step2. /usr/bin/ 配下にリンクを作成する。
$ sudo ln -s /opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/django/bin/django-admin.py /usr/bin/
$ django-admin.py startproject newproject
$ # エラー無し
$ # (`・ω・´)b good

 

権限を書き換える。

$ sudo chown -R myuser  newproject
$ sudo chmod -R u+w newproject

 

同期をかける

ワイ、ちょっと特殊でPostgreSQL使ってます。
えい(`・ω・´)

$ python ../manage.py syncdb
Traceback (most recent call last):
...
ImportError: No module named 'psycopg2'
...

 

psycopg2 が無い?(´・ω・`)
調べる。
python - Error: No module named psycopg2.extensions - Stack Overflow

とにかく、インストールしろと。

$ port search psycopg2 | grep "^py[0-9]\{2\}-psycopg2"
py25-psycopg2 @2.5.2 (python, databases)
py26-psycopg2 @2.5.2 (python, databases)
py27-psycopg2 @2.5.2 (python, databases)
py33-psycopg2 @2.5.2 (python, databases)
py34-psycopg2 @2.5.2 (python, databases)
$ # grep のダメな例 ^py[0-9]{2}-psycopg2
$ # 1) 中括弧 } の前に ¥ が無い  2) タブルクオテーション " が無い
$ sudo port install py33-psycopg2
...
--->  No broken files found.                             

 

__str__ って何?

んー、オブジェクトを print したときに、表示され文字列が定義できるってことでいいのかな。
__str__

>>> # 定義前
>>> print(student)
Object Student
>>> # 定義後
>>> print(student)
Object Student: Suzuki Taro
>>> # 的な、(。-`ω-)ンー

 

>>> # 定義前
>>> Poll.objects.all()
Poll: Poll object
>>> # 定義後
>>> Poll.objects.all()
Poll: What's up?

 

NameError: global name 'timezone' is not defined

(。-`ω-)ンー Play around している最中に発生。
下記、参照の上、修正。なぜ、これで上手く行ったのか。
#19793 (global name 'timezone' is not defined) – Django

>>> from polls.models import Poll, Choice
>>> p = Poll.objects.get(pk=1)
>>> p.was_published_recently()
>>> ...
>>> NameError: global name 'timezone' is not defined

 

from django.db import models

import datetime #<- 追記
from django.utils import timezone #<- 追記

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
...

 

URL を操作するところでアプリが消える。

admin 画面にわいの自作のアプリが無い(´;ω;`)ブワッ

PCごと再起動や。
えい(`・ω・´)m9

あれ、今度は表示されて。
そして polls が消えてる。
(。-`ω-)ンー

ちらっと、サーバ起動時のコマンドを見てみる。
ワイの自作のアプリのプロジェクトのディレクトリから起動していしていることに気づく。
サーバは、プロジェクト単位の起動ですよっと。

sudo python /Library/WebServer/Documents/domodomoprojecet/manage.py runserver