Tags: django
Django Form-Preview
ことだまんです。
登録時にフォームをフリーズして表示し、最終確認画面を表示する場合に便利そうなのでメモ。
http://djangoproject.jp/doc/ja/1.0/ref/contrib/formtools/form-preview.html
自前で実装する前に気づいてよかった。
Django Formの追加属性
ことだまんです。
url = forms. URLField() comment = forms.CharField( widget=forms.TextInput(attrs={'size':'40'} ))
こんなかんじ。
メモ。
http://djangoproject.jp/doc/ja/1.0/ref/forms/widgets.html
http://74.125.153.132/search?q=cache:Hsza0aKxlccJ:djangoproject.jp/doc/ja/1.0/ref/forms/widgets.html+django+form%E3%80%80attr%E3%80%80属性&cd=1&hl=en&ct=clnk&client=safari
Django DateTimeFieldのデフォルト値を的確に評価する
ことだまんです。
models.DateTimeField(default=datetime.datetime.now)
関数名を指定すればok。
関数の戻り値を渡すとインスタンスが生成された時点の時間になる・・・
Django cleaned_dataからFKを追跡
ことだまんです。
タイトル通りFKを追跡。
cleaned_data['hoge'].id
まぁ当然といえば当然なんだけど・・・
validator作ってたらどつぼにハマッタw
Django Settingsに好きに定義したものをげっとする。
ことだまんです。
タイトル通り
settings.pyに
TESTVAL = 'hoge'
などと書いておいて、げっとするときは
from django.conf import settings
print settings.TESTVAL
Django 1.1 aggregation min max countなど集計が可能
タイトル通りですが、Django1.1で集計が可能になったご様子(group_by,having)
ますますSQL書く頻度がw
http://docs.djangoproject.com/en/dev/topics/db/aggregation/#topics-db-aggregation
DjangoのManyToManyでハマッタ
ことだまんです。
ViewやTemplate内でリレーション先のオブジェクトをループ参照などすると
ManyRelatedManager' object is not iterable
イテレーターオブジェクトじゃないよ。
っと怒られました。
多対多テーブルにクエリーを投げてあげないと中身がないんでエラーになるようですな。
とりあえずView内で参照したい場合は
object.hoge.all()
などとして評価してあげないといけない。
ちなみにテンプレート内では
{{ object.hoge.all }}
のようにしてあげれば評価可能。
自分のメモ用に断片コードをのせておく。(View内)
taggroup = TagGroupM.objects.all()
for tag_g in taggroup:
print tag_g.Name
for tag in tag_g.TagID.all():
print tag.Name
print '-----------'
相変わらずインデントしてソースを載せられないと言ってみるテストwww
Django DynamicZipのメモ
ことだまんです。
タイトル通りメモ。
MIMEType指定が楽でいいね。
http://code.djangoproject.com/wiki/CookBookDynamicZip
Apache2.2上でDjangoを動かしてみた。静的ファイルを配置
ことだまんです。
前回の続きで、静的ファイルを配置してみました。
DjangoをApacheで動作させた場合はパスが必ず、Apacheのドキュメントルートから見たパスになります。
当たり前と言えば当たり前ですが、Django付属のテストサーバーで長いこと試験をしていると混乱します(笑
したがって、各テンプレートのCSSのアドレスは必ずApacheのドキュメントルートから見たパスになります。
/DocumentRoot/media/css/hoge.cssみたいな感じですな。
(DjangoのプロジェクトディレクトリがRootになりません。)
次にAdminサイトのCSSとテンプレートを配置。
ApacheのDocumentRootにmediaディレクトリを作成。
/usr/lib/python2.5/site-packages/django/contrib/admin/mediaのファイルを全部コピーするかシンボリックリンクを張って終わり。
頭の中を整理できれば簡単簡単。
ubuntu 8.04.01 Apache2.2上でDjangoを動かしてみた
ことだまんです。
いつもDjango付属のテストサーバーで開発をしている訳ですが
アプリケーションが完成(デザイン以外)したので、Apacheで動かしてみました。
とりあえず、mod_pythonがインストールされていなかったのでインストール
$ sudo apt-get install libapache2-mod-python
a2emodしなくても有効になってました。
次に/etc/apache2/sites-available/defaultを編集
<Location "/ProjectName/">
SetHandler python-program
PythonPath "['/DocumentRoot/ProjectDirectory'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE ProjectName.settings
PythonDebug On
PythonAutoReload On
</Location>
こんな感じ。
PythonPathにはプロジェクトまでのディレクトリをフルパス。
SetEnv DJANGO_SETTINGS_MODULEはプロジェクト名.settingsで完了。
PythonAutoReloadはスクリプトに変更があると、Apacheを再起動無しにリロードしてくれる便利な機能。
本番環境ではDebugもAutoReloadも不要です。
あとはurl.pyを変更する。
上の場合は/ProjectName/を各urlパターンに追加する。
さて、sqlite3を使用し、ささっとアプリケーションを作ったのですが・・・
sqlite3でこける。
OperationalError at /hoge/some
unable to open database file
settings.pyのDATA_BASE_NAMEがフルパスになっていなかったのが原因、更にDBファイルのパーミッションがApache権限で書き込めない様になっていたのが原因。
sqliteを初めて使ったのでプチはまり。
さて、次はCSSやAdminサイトの静的ファイルの設定だ。