携帯のセッション維持

Posted by Ken on 14th, 2009

携帯ってクッキーを使えない奴がいたはず。
確か、docomo。
最近の機種は使えるようになったが、不具合が出て・・・なんてことになってた気がする。
クッキーを使えないとセッションの維持が面倒そうだ。
少なくともDjangoの認証ではクッキーが必要だったはず。

django.views.static.serve

Posted by Ken on 10th, 2009

とあるサイトを見て、djangoをいじってた。

urlpatterns = patterns(”,
(r’^static/(?P .*)$’, ‘django.views.static.serve’, {‘document_root’:'/path/to/static’}),
)

document_rootには’./static’って相対パスで書いてあったんだけど、実際は絶対パスじゃないと動かない。
もしかしたら、相対パスの基準となる場所が違っていただけなのかもしれないけど、基準がわからず。

django-evolution

Posted by Ken on 5th, 2009

東京に戻ってきました〜。
早速Djangoネタ。

django-evolution – Google Code
http://code.google.com/p/django-evolution/
python manage.py syndb後にDBを更新しなければならないんだけど、それをやってくれるモジュール。
使い方は書いてある通りなんだけど、こんな感じに便利もジュールを増やしていくと、あとが大変そうなのでシンボリックリンクで分離してみた。

modules
`– django_evolution
project_dir
|– django_evolution –> ../modules/django_evolution
`– other apps

modulesにはどこかで拾ってきたものを入れて、project_dir配下からシンボリックリンクで参照。

こんなのを書いておくと./syndbだけで済んじゃうけど、悪影響は無いかな?
しばらく使ってみるか。

#!/bin/bash

py manage.py syncdb
py manage.py evolve –hint –execute

Djangoのnullの扱い方

Posted by Ken on 1st, 2009

Djangoでnullをセットしようとした場合、ちょっとしたコツが必要。
コツというか、考え方としては突拍子なわけでもない。
ただ、知らないとどうしていいのかわかんない。

モデルフィールドリファレンス — Django v1.0 documentation
http://djangoproject.jp/doc/ja/1.0/ref/models/fields.html#django.db.models.fields.Field.null
まずはここに書いてあること。

空の文字列値は NULL ではなく空文字列として保存されることに注意して下さい。 null=True が使えるのは、整数型やブール型、日付のような、文字列ではないフィールド型の場合だけです。 null はデータベースでの記録操作にのみかかわるパラメタなので、フォーム上で空の値を入力できるようにしたければ blank=True も指定する必要があるでしょう (blank も参照してください)。

具体的には、

  • 文字列はnullを扱えない
  • nullをセットしたかったらnull=Trueを使う
  • ForeignKeyの場合はblank=True, null=Trueと併せて使う

ということ。

勝手な解釈ではあるが、

  • 空文字はわかるけど、文字が無いってなんか変じゃない?
  • nullにしたい場合は明示的に
  • ForeignKeyみたいな場合は未入力(blank)を許しつつ、参照してるんだからnullも許可させる必要がある

ってことなんじゃないかな。
なぜ、blankとnullみたいな、似たような項目があるのか?ということについては似て非なるものだからだと思ってる。
blankについては入力時のチェックに使う、validationに関する項目。
nullについてはデータの存在意義(意義というとちょっと違うかな)についての定義。
こう考えると、文字列はblankを許可する必要はあるかもしれないけど、値が無いってのはおかしいでしょ?だから、null=Trueなんて設定できないよ〜。
ForeignKeyを設定したく無いなら、未入力(blank)を許可しなきゃね。それとは別に、参照先が無い場合(null)があるからそれは別に定義しなきゃダメだよね。
ってことなんだと思う。

今のところ自分ではすっきりしてるのでいいかな?と思ってる。

2冊のバージョン違い

Posted by Ken on 11th, 2009

Python3Django x Pythonは微妙に読みづらい。

“はじめてのPython3″はタイトル通りPython3を視野に入れた本。
“Django x Python”はPython2.5をベースに書いてる。
Django本はDjangoのところだけ読めばいいんだろうけど、ちょっと読みづらい(^^;

Python本x2

Posted by Ken on 7th, 2009

Python3
はじめてのPython3
こっちは流し読み程度にしとくつもり。

Django x Python
Django x Python
こっちは読みつつ、調べつつという感じかな。

あと、PLUTO 7を買ったんだった。
PLUTO 7
PLUTO 7

Amazonのリンクはめんどいな・・・。
プラグインを調べたけど、どれもあまり気に入らなかったからなぁ・・・自分で書くか?

syncdbでsqliteのエラー

Posted by Ken on 28th, 2009

djangoを入れてみたものの、sqlite3のモジュール部分で動作せず。
python manage.py syncdbでなぜかエラー。

Error loading sqlite3 module: No module named _sqlite3

環境はUbuntu 8.10にPython2.6をソースでインストール。
そこに、djangoをsetup.pyでインストールした。

Web上でも似たような人たちがいて、人それぞれ対応が違う。
ソースで入れ直す人、CentOSでdevelパッケージを入れたりしてる人。
結局、直接的な解決に至らなかったので、自分で対応を考えることにした。

まず、_sqliteが無いと言われているので存在を確認。
Python2.6ディレクトリ配下には存在せず :sad:
Python2.5は・・・あった!
たぶん、python-pysqlite2というパッケージが入っているからだと思う。
というわけで、_sqliteを使うべく、Python2.6のライブラリとして使うためにシンボリックリンク作成。
そしたら、unicodeなんとかでエラー。
2.6の役割の一つに3.0への移行があるから、それに関する違いでエラーが出たっぽい。

じゃ、setup.pyで_sqliteを作ればいっか、と調べてみるとpysqlite2というライブラリがあるっぽい。
dpkgではpython-pysqlite2として配布されてるやつだな。
pysqlite – Trac
http://oss.itsystementwicklung.de/trac/pysqlite
ここからダウンロードしてきて、インストールを実行。
python setup.py install
インストール途中でエラー発生。

sqliteのソースが無いようなことを言われたのでソースをインストール。
sudo apt-get install libsqlite3-dev
yumパッケージで言う”-devel”みたいなパッケージっぽい。
再度、pysqlite2をsetup.pyでインストール。

このあと、syncdbを試したら動作しました。
無理な構成にもなってないし、この対応でよかった気がする。
setup.pyでインストールする時はそのバージョン配下のライブラリとして増えていくみたいなので、2.6が不要となったら/opt/python2.6を消せば済みそう。

Search


SUBSCRIBE

  • 最近のコメント

  • カテゴリー

  • タグ

    Amazon Android au BeagleBoard blog CMS Compiz Fusion Django DVD Google HT-03A iPhone ISMS Linux LUMIX LUMIX G1 MacBook MySQL Workbench OpenX Poken Python server Software Design SOY CMS TinyMCE Ubuntu Ubuntu 9.04 Vim VirtualBox WordPress wwwsqldesigner XenServer XMind しろいくも オトノハコ ハルフウェイ マンガ 岩岡 ヒサエ 帰省 広告 望遠鏡 桜井亜美 花粉症