カテゴリ: Python, Django
SnowLeopard Pythonでpsycopg2に悩む
ことだまんです。
SnowLeopard 64bitに標準で入っているpython2.6からpostgresqlに接続しようと毎度のごとく
psycopg2をインストールしようとしたのですが・・・・
_PQbackendPIDがエラー
解決しようとしましたが、心が折れたので、32bitモードでpythonを使用する様にしてインストール・・・
defaults write com.apple.versioner.python Prefer-32-Bit -bool yes
あとはダウンロードしたpsycopg2の中にあるsetup.cfgのpg_configの行に自分でインストールしたpostgresqlのpg_configをフルパスで書いて、setup.pyでインストールして終わり
setup.cfg
pg_config=/Library/PostgreSQL/8.4/bin/pg_config
setup.py install
Pythonでsmtplib及びemailでBccヘッダーを懇切丁寧に指定するとダメな件について
ことだまんです。
タイトル通りですが
self.msg['Bcc'] = 'hoge@hogehogehogehoge.com,hoge@hogehogehogehoge.com'
とすると、メールクライアントできちんとBCCが表示されます。
正しくは
#self.msg['Bcc'] = 'hoge@hogehogehogehoge.com,hoge@hogehogehogehoge.com'
無かった事にしてメールを送ってください。
ヘッダー指定いらない罠。
Pythonでsmtplibなどのタイムアウト時間を設定してみた
ことだまんです。
smtplibやurllibなどのソケットを使う場合、タイムアウト時間を指定したい場合がある。
調べるのも面倒なのでスクリプトの最初に下記を記述してみた。
import socket
socket.setdefaulttimeout(20)
こんな感じでスマートじゃなさげだけど、ソケットに対して直接タイムアウト時間を指定してみた。
一応うまくいった。。。
上の例は20秒。
ちなみに例外を拾うときは
import socket, sys
socket.setdefaulttimeout(20)
try:
#何かの処理
except socket.error:
errno, errstr = sys.exc_info()[:2]
if errno == socket.timeout:
print u"timeoutした"
else:
print u"タイムあうと以外のsocketえらーだなこりゃ"
みたいな感じ
exceopt socket.timeoutでもおk
smtplibの例外はこっち
http://pythonjp.sourceforge.jp/dev/library/smtplib.html
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 Requestメモ
ことだまんです。
基本ってやっぱりすごく大事ね(笑
SSLやらクッキーやらこれでいけますな。
http://docs.djangoproject.com/en/dev/ref/request-response/
Django DateTimeFieldのデフォルト値を的確に評価する
ことだまんです。
models.DateTimeField(default=datetime.datetime.now)
関数名を指定すればok。
関数の戻り値を渡すとインスタンスが生成された時点の時間になる・・・
Django 1.1 validator.py無いですよ
ことだまんです。
raise ValidationError(略)
えらがー・・・
validator.pyが無いよ・・・っていうエラー・・・
coreをみたらありました。
django.core.exceptions.pyになってます。
こっちのファイル名の方が分かりやすいなぁ。
Django cleaned_dataからFKを追跡
ことだまんです。
タイトル通りFKを追跡。
cleaned_data['hoge'].id
まぁ当然といえば当然なんだけど・・・
validator作ってたらどつぼにハマッタw