Djangoの日本向けウィジェットを使う
2007年03月30日(金) 19:24
ウィジェットと、国際化文字列の双方がsvnに取り込まれたので、紹介します。
localflavorはdjango.contrib.localflavorパッケージに含まれるもので、Djangoのi18n/l10nに対する取り組みの積極さを表しているとおもいます(adminもアラビア語等右から記述する言語に対応しています)。
私の作成したパッチの不備から、先日リリースされた0.96というバージョンには含まれておりません。
まずは、どのようなものなのかのスクリーンショットを見てください。

localflavor-1 posted by (C)everes

localflavor-2 posted by (C)everes
サンプルは、ユーザ(django.contrib.auto.models.User)に対して、送付先住所を設定するという簡単なものです。
頻出するであろう「郵便番号の入力チェック」と「都道府県の選択・入力チェック」の再発明せずに済むようになりました。
モデルのコートは通常と変わらないので、非常に単純です。
from django.db import models
from django.utils.translation import gettext as _
from django.contrib.auth.models import User
# Create your models here.
class SendTo(models.Model):
zip_code = models.CharField(_('Zip Code'), maxlength=8)
prefecture = models.CharField(_('Prefecture'), maxlength=9)
street = models.TextField(_('Street Address and Building'))
user = models.ForeignKey(User, verbose_name=_('User'))
def get_absolute_url(self):
return '/flavor/add/'
次に、viewsを見てみます。
from django import newforms as forms
from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader, Context
from django.contrib.localflavor.jp import forms as jp_forms
from flavor.sample.models import SendTo
#customize form
SendToForm = forms.form_for_model(SendTo)
SendToForm.base_fields['zip_code'] = jp_forms.JPPostalCodeField()
SendToForm.base_fields['prefecture'].widget = jp_forms.JPPrefectureSelect()
def add_send_to(request):
if request.method == 'POST':
form = SendToForm(request.POST)
if form.is_valid() :
send_to = form.save()
return HttpResponseRedirect(send_to.get_absolute_url())
else:
form = SendToForm()
t = loader.get_template('sample/sendto_form.html')
c = Context({'form': form,})
return HttpResponse(t.render(c))
使い方
- 日本向けのlocalflavorはdjango.contrib.localflavor.jp.formsに含まれていますので、別名でインポートします。
- フォームをカスタマイズするために、モデルからデフォルトのフォーム(SendToForm)を生成します。
- フォームの郵便番号用フィールドをJPPostalCodeFieldに、フォームの郵便番号用フィールドの表示ウィジェットをJPPrefectureSelectに変更します。
- あとは、カスタマイズしたSendToFormを利用すれば、サンプルのような見た目になります。
郵便番号フィールドは、7桁の郵便番号(ハイフンありでも無しでも可)を受けて、ハイフン無しの7桁を返します。
デフォルトのウィジェットやフィールド(モデル用ではなくフォーム用のもの)がmodelに定義できて欲しいところです。modelのフィールド属性には、オールドフォームズのウィジェット設定がありますので、きっと近い将来設定できるようになるに違いない…。
今回のサンプルは下の関連コンテンツからダウンロードできます。
Djangoで稼働しているサービスを少しだけ紹介するよ
2007年03月27日(火) 02:55
localflavor.jpが取り込まれたのに気を良くして、Djangoで稼働しているサービスをいくつかピックアップ。
Django製のサービスや、アプリケーションは大量にあります。申告されているものは、wikiに列挙されています。
rhacoな人が「DjangoはCMS」とか言うので、Washington Post等のメディア系については、省きます。メディア系については、startribune.comが全面的にDjangoを採用する可能性があるようです(web2.0的なサイトに再構築予定)。
追記 2007/03/28
日本
Flickr2PhotoZouウノウの写真共有SNS「フォト蔵」へFlickrの写真を移行するためのサイト。Djangoな理由は中の人がPythonistaだからかw
追記 2007/03/28 ここまで
ソーシャルネットワーク系
grouno.netいつの間にやら会員数が120万人を突破した模様。ギリシャのソーシャルネットワークサービス。ギリシャ語も分からないし、そもそもソーシャルネットワークサービスなので入れない…。
groovr
携帯ベースのソーシャルネットワークサービス。Google Mapsと位置情報を組み合わせたりしているのかな?
cool the planet.net
このサービスの元になっているのは、Greenpiece製のオープンソースSNSアプリケーション「Custard Melt」
サービス自体は盛り上がってないのかな?
共有系
TEENWAGいろんなメディアが共有できる模様。SNSも兼ねている。規約が緩そうなので、見る時は注意が必要。
tabblo
写真共有。写真を格好良くレイアウトして、アルバムを作れる。作ったアルバムは購入できます(製本されてくるみたい)。今のところ容量制限無し。アルバムを製本して売ることでサービスを継続しているようなのですが、日本からも購入できるかは不明。ポスターにも出来るよ。
jumbodir
ファイル共有(ストレージ)。アップロード容量やダウンロードスピードに制限はないけど、アップロードのスピード制限が64kb/sとのこと。15日間たつとデータは削除される。アップしたファイルは誰にでも見えちゃうよ。
オークション系
MyMart携帯でオークションができるみたい。商品は、写真だけじゃなくって動画でも紹介可能?
bookya
ドイツの学生向け書籍販売サイト。
旅行系
MonkeyBean旅行上級者向けの旅行サイト。欧米の人って、マニアックな旅が好きだよね、ということがよくわかる。本当は日本人もいきたいんだろうけど、まとめて取れるバカンス期間が短くってこういう旅行はきっと無理なんだろうな。
trogger.info
旅のブログでつながるサイト。ドイツ語版もある。写真の他に動画もアップできるみたい。
その他
Mindpicnicオンライン教育システム。どうやら受講は只らしい(一定数以上のコースをとると有料ユーザにならないといけない)。本を読むというコースがあったりして面白い。
eysy-cv.com
きっとわかる人には有用なんだろうと思われるサービス。「curriculum vitae」ってなに?
LiveBus.org
実際の運行情報とGoogle Maps、携帯を組み合わせたサービス。日本でも都バスなんかはこういうことで来そうな気がする。バス停にバスの現在位置と到着予想時刻が出てるもんね。
chicagocrime.org
2005年のベストマッシュアップを受賞した、Django開発者Adrianのサービス。来年のPyConはシカゴだといいなぁ。ところで、シカゴはそんなに犯罪が多いのか?
dpaste
コードのスニペットを貼ると、綺麗にコードハイライトされる。いずれ消えるというのが格好いい。いけてないコードでも安心して貼付けられるw。まとまったコードでDjangoに関連するものは、django snippetsへ。django snippetsはログインも必要だし、コードに関する説明文も書かなきゃいけない。その分、いいコードがたくさんあるよ。
Gypsy Jobs
Djangoに関連する求人情報。django-developersにメールが流れることもあるけど、ここがきちんと機能するといいなぁ。
公式ドキュメント以外のリソースはたいていここから辿れます。日本語になっていない情報がたくさんありますよ:)
mod_pythonなのかmod_wsgiなのか
2007年03月25日(日) 01:59
mod_wsgiを適当に試してみた。
本家から苦言が…。以下はこちらもあわせてみてください。Google Groups mod_wsgi
Read first.
I tested the view include database access. So, main bottle neck might be database.
Developer of mod_wsgi Graham Dumpleton said In respect of the difference between mod_python and mod_wsgi, although
at the low level mod_wsgi may have less overhead than mod_python, once
you add in a large WSGI application framework such as Django, because
processing time is principally taken up by Django and any database
accesses, you probably will not see much difference between the two.
See this mod_wsgi group's response too.
100件くらいのデータから10件を持ってきて一覧するというどこかで見たことのあるベンチ(実はネックはDBか!?)。
CoreDuo1.83位のmacbookでPostgreSQL8を使って適当にやってみただけです。
本当はメモリ使用状況とか大事なんだろうけど、適当に入れたモジュールが山ほどあって異常にデカイapacheプロセスなので放っておいた:)。一応、mod_pythonを試す時にはmod_wsgiをオフに、mod_wsgiを試す時はmod_pythonをオフにした。オフってLoad Moduleしないってことね。
確かに、mod_wsgiはそこそこ早そうな気がする(レンタルサーバに導入しやすいのであれば、間違いなく救世主。mod_php並みの普及になれば神)。
えっと、売りは何だっけ?あと何を調べればいいんだろう。
PS2 2007/03/26 (さらに追記)
Graham Dumpleton said Worse is that on
Mac OS X I sometimes see 'ab' just hang for a bit for no good reason
which can blow out the 'max' figure.
OSXの ab はたまにハングすることがあるので max の値がおかしくなるとのこと。
I did benchmark test again on Gentoo Linux.
Tested by five times for mod_python and mod_wsgi and used the best result each.
なので、linuxでやり直してみました。
各々5回ずつテストして、一番いい結果を利用。
-c 10 -n 5000 for 127.0.0.1
mod_python
Requests per second: 114.12 [#/sec] (mean)
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.7 0 22
Processing: 11 86 50.9 74 356
Waiting: 0 86 50.9 74 356
Total: 11 86 50.9 74 356
mod_wsgi
Requests per second: 115.14 [#/sec] (mean)
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.8 0 19
Processing: 9 86 51.2 74 354
Waiting: 0 85 51.3 74 354
Total: 9 86 51.2 74 354
Because there is hardly a difference, it is supposed that database access uses most of the time.
Returned a page of about the same size using django.views.generic.simple.direct_to_template for without database access.
結局殆ど差がでないので、データベースアクセスでほとんどの時間を使っていると推測。
django.views.generic.simple.direct_to_templateを使って、データベースアクセス無しの結果を返すようにしてみた。
mod_python
Requests per second: 1019.71 [#/sec] (mean)
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 2 2.5 1 16
Processing: 1 6 10.1 5 251
Waiting: 0 5 9.6 3 243
Total: 1 8 10.4 7 254
mod_wsgi
Requests per second: 1120.94 [#/sec] (mean)
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 2 2.6 1 11
Processing: 1 5 6.8 5 225
Waiting: 0 4 6.6 3 224
Total: 1 8 7.1 8 233
The difference became around 10%.
File IO may become the bottleneck this time....
10%ほど差が出た。今度はファイルIOがボトルネッックになってるかも。
Finally, I use memcached backend.
最後に、memcachedを使ってみた(データベースアクセスもファイルIOも無し)。
mod_python
Requests per second: 1008.73 [#/sec] (mean)
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 2.4 1 11
Processing: 1 7 4.8 7 71
Waiting: 0 5 5.1 5 70
Total: 1 9 4.9 9 71
mod_wsgi
Requests per second: 1264.55 [#/sec] (mean)
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 1.9 1 8
Processing: 0 5 3.7 5 96
Waiting: 0 4 3.5 3 60
Total: 0 7 3.8 7 96
mod_wsgi is 25% faster than mod_python ?
mod_wsgiの方が25%速い?
Because speed doesn't improve much with memcached either, it may have other bottleneck like hardware limitation or something.
memcachedを使ってもあまり速度の向上が無いので、今度は別の何かがボトルネックになってるかも…
PS 2007/03/25 (追記)
mod_wsgiの開発者、Graham Dumpletonさんから「ある程度の大きさをもつDjangoのようなフレームワークを利用した場合には、余り目に見える差は出てこない」という苦言をいただきました。
そもそも、データベースにアクセスしているので、ボトルネックがデータベースである可能性は当然高いです。mod_wsgiも安定しているなぁ、程度で見てください。
また、-n 1000のテストが(指摘通り)明らかにおかしいので、-n 100のテスト結果にしました。
mod_python
/opt/local/apache2/bin/ab -c 10 -n 100 http://127.0.0.1/bench/list
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 1997-2005 The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient).....done
Server Software: Apache/2.2.2
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /bench/list
Document Length: 582 bytes
Concurrency Level: 10
Time taken for tests: 0.877565 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 80500 bytes
HTML transferred: 58200 bytes
Requests per second: 113.95 [#/sec] (mean)
Time per request: 87.757 [ms] (mean)
Time per request: 8.776 [ms] (mean, across all concurrent requests)
Transfer rate: 88.88 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 2.5 0 20
Processing: 18 84 48.4 71 274
Waiting: 16 83 48.5 71 273
Total: 22 84 48.2 72 274
Percentage of the requests served within a certain time (ms)
50% 72
66% 89
75% 93
80% 110
90% 171
95% 188
98% 200
99% 274
100% 274 (longest request)
/opt/local/apache2/bin/ab -c 10 -n 1000 http://127.0.0.1/bench/list
#something wrong with my apache setting.
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 1997-2005 The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Server Software: Apache/2.2.2
Server Hostname: localhost
Server Port: 80
Document Path: /bench/list
Document Length: 582 bytes
Concurrency Level: 10
Time taken for tests: 9.287893 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 805000 bytes
HTML transferred: 582000 bytes
Requests per second: 107.67 [#/sec] (mean)
Time per request: 92.879 [ms] (mean)
Time per request: 9.288 [ms] (mean, across all concurrent requests)
Transfer rate: 84.63 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 3
Processing: 15 90 433.9 39 8587
Waiting: 15 90 433.8 39 8583
Total: 15 90 433.9 39 8587
Percentage of the requests served within a certain time (ms)
50% 39
66% 53
75% 74
80% 105
90% 174
95% 208
98% 279
99% 296
100% 8587 (longest request)
mod_wsgi
/opt/local/apache2/bin/ab -c 10 -n 100 http://127.0.0.1/bench/list
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 1997-2005 The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient).....done
Server Software: Apache/2.2.2
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /bench/list
Document Length: 582 bytes
Concurrency Level: 10
Time taken for tests: 1.267926 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 80700 bytes
HTML transferred: 58200 bytes
Requests per second: 78.87 [#/sec] (mean)
Time per request: 126.793 [ms] (mean)
Time per request: 12.679 [ms] (mean, across all concurrent requests)
Transfer rate: 61.52 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.0 0 9
Processing: 16 90 98.9 63 725
Waiting: 16 89 98.9 61 724
Total: 16 90 98.9 63 725
Percentage of the requests served within a certain time (ms)
50% 63
66% 82
75% 105
80% 113
90% 202
95% 261
98% 416
99% 725
100% 725 (longest request)
/opt/local/apache2/bin/ab -c 10 -n 1000 http://127.0.0.1/bench/list
#something wrong with my apache setting.
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 1997-2005 The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Server Software: Apache/2.2.2
Server Hostname: localhost
Server Port: 80
Document Path: /bench/list
Document Length: 582 bytes
Concurrency Level: 10
Time taken for tests: 9.564653 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 807000 bytes
HTML transferred: 582000 bytes
Requests per second: 104.55 [#/sec] (mean)
Time per request: 95.647 [ms] (mean)
Time per request: 9.565 [ms] (mean, across all concurrent requests)
Transfer rate: 82.39 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 5
Processing: 14 94 423.0 32 5471
Waiting: 14 94 422.9 31 5471
Total: 14 94 423.0 32 5471
Percentage of the requests served within a certain time (ms)
50% 32
66% 53
75% 68
80% 82
90% 160
95% 265
98% 286
99% 321
100% 5471 (longest request)
Djangoの0.96がリリースされました
2007年03月24日(土) 10:16
Djangoバージョン0.96がリリースされました。
リリース版を利用している場合には、アップグレードすると様々な新機能を利用可能です。
日本地域利用のFormFieldとWidgetは、パッチにゴミを混入させてしまったため0.96には載りませんでしたorz。
逆に言えば、今ならまだlocalflavorに追加可能ですよ。現状のものはこちら
そうそう、rhacoもバージョン1.1.0がリリースされてますよぉ。chocobで管理画面を見てみると楽しいかも。
俺がwikiを嫌う理由
2007年03月20日(火) 13:45
まずはここを見てください。
文章の中に「レイヤモデルアーキテクチャ」という言葉があります。この言葉が何を意味しているのか、リンクをクリックすればわかるはずですよね?
Fxck!
※ひがさんが悪いのではありませんので、あしからず。ひがさんのページで学んでいて、丁度いい例があったので使わせてもらっただけです。S2万歳!
やっぱりDIの良さがわからない
2007年03月15日(木) 13:55
GoogleがGuiceというDIコンテナをリリースし、素早く紹介記事があがったわけだけど、やっぱりDIの良さがわからない。
はてなで貰ったコメントに突っ込んでみる。
Yoshioriさん。「AOPいいよ!!トランザクションとか自分で実装するのメンドイよ!!」
おいら「Djangoでトランザクションスコープをリクエストにしとけばいいんで…」
nekoraさん 「スクリプト言語で間に合う程度の小規模・低負荷・単純な案件ならばスクリプトで済ませるべきであるという話の一例。時に「動的言語」って何だろ」
おいら「「動的型付言語でした」。スクリプト言語で間に合わない程度というと、世界数カ所で同時にコミットするような案件位だよね。みんな凄いのやってるねぇ。とはいいながら、確かにへぼを集めてもある程度きちんと書けるのがJavaとかの良さだというのは分かってるぞ。あれ?DIの話関係無いねぇ」
これはきっと少人数開発しているからということが大きいと思うんだけど、少人数でもDIはいいんだよということを誰かが教えてくれないかなぁ。
だって、部品をテストするときに「インターフェース定義」「スタブ(モック)作成」という余計な手間と、スタブの代わりになる部品(実装)ができたときに設定を書き換える手間が増える訳じゃん。
少人数開発(実際は2チーム)で開発をしていれば、だいたい開発スピードもわかってるし、うまくスケジューリングすれば部品待ちってことも殆どないわけで。
そもそもが動的言語使っちゃえば、設定ファイルとかアノテーション書き換える時間で実装を書き換えられちゃうんだから、DIの必要性を感じたらPythonに乗り換えるタイミングなんじゃないかとか思ってしまう。
つか、Javaやめた方が良いよと言う人が最近多い。もっともだと思う。
Djangoはデザイナフレンドリー?
2007年03月13日(火) 12:41
3月の2〜4日に日本中からPythonistaが集う開発合宿、「Python Developers Camp 2007 Winter」が行われました。
初日にデザイナ側の人、nyusukeさんが発表した「Djangoにおけるデザイナフレンドリーとは」のプレゼン動画をstage6にアップしました(動画配信チームの尽力に感謝)。
デザイナ向けDjangoセミナーとかがあったら参加者いるかな?

お問い合わせ画面 - devcom posted by (C)everes

お問い合わせ処理画面 -devcom posted by (C)everes
サンプルについての補足
ライセンス: 修正BSDです。
データベースはsqliteを前提にしています。syncdbの際に自動でデータが登録されるSQL(devcom/contact/sql/inquirytype.sql)が他のバックエンドで動作するかどうかは確認していません。
トップページに表示されるニュース一覧は、ログインしていない人に対しては一定期間キャッシュされたデータが表示されるようになっています。
フラットページでは、django.contrib.sitesのデータを利用します。syncdbというインストール作業でexample.comが登録されてしまうため、本来はデザイナさんにデータの編集をお願いしなければいけません(開発サーバはlocalhost:8000)。デザイナがそれを意識しないで済むように、django.contrib.sitesのインストール終了後フックでデータを無理矢理localhost:8000に書き換えました。
フラットページ(flatpages)で追加しなければいけないデータは、「/」「/company/」「/service/」です。管理画面から適当な内容のデータを追加してください。
Djangoの管理画面はアプリケーション用にジェネレートされるものではありませんが、テンプレートの探索順序がうまくできているため、フラットページのみにWYSIWYGエディタを追加することも容易です(devcom/templates/admin/flatpages/flatpage/change_form.html)。
お問い合わせの処理をできる限り行いやすいように、お問い合わせのモデルはある程度細かく定義してあります。試しにお問い合わせを数件登録し、管理画面でお問い合わせを処理してみてください。
ビューはいっさい記述していません(他のフレームワークでいうAction)。devcom/news/views.pyとdevcom/contact/views.pyはからっぽです。
Pythonのdocutilsがインストールされていれば、管理画面の右上「ドキュメント」というリンクから、「モデルについてのドキュメント」が参照可能です。ビューやカスタムテンプレートフィルター/タグも作られていれば同様にドキュメントが動的に表示されます(パブリッシュってなに?)。
nyusukeさんとの恊働について。プログラムはわたくし露木が書きましたが、テンプレートはすべてnyusukeさんによるものです。変数や制御文・ページングの記述もすべてnyusukeさんが行っています。私はテンプレートの構成についてのアドバイスと、どの呼び出しでどのモデルがどういう名前で渡されるか、ということのみを説明しました。
Django勉強会 Disc3 終了
2007年03月11日(日) 00:30
4回目の勉強会となるDjango勉強会 Disc3、終了しました。
今回は、Django以外にもStackless PythonやらsennaやらPRhagger(結局名前決まらず?)やらのお話も聞くことが出来ました。常山さんは「複数の翻訳サイトを縦断して比較できるサイト」を使って日々の情報収集にあたっているということも驚きでした。
MiCHiLUさんの資料は早くもIT戦記さんのタイムマシーン型(Firefox限定)だったりして、刺激的でした。
MiCHiLUさんのセッションと平行して行われたrhaco勉強会も、大きな笑い声が聞こえてきたので楽しかったようです。
懇親会は参加率が85%(17/20)まで落ちてしまいましたが相変わらずの参加率で、いろいろな会話が行われていたようです。
初参加のogawasoさんに、「参加者が強そうで酸化しにくい雰囲気」と言われてしまいました。煽り方を間違えていたようですorz
「面白い人たちが来るからふれあいたい人たちカモン!」という狙いで凄い人が来てるよーと煽ってしまっていました。
実際は、ノートPC無くても構いません。初学者ウェルカム(というか裾野を広げたい)なのです。
そういえば「勉強会の写真無いよね」というコトに気づいたのでPythonista御用達のフォト蔵にアルバムをアップしました。
Django勉強会 Disc3 閉め切り間近
2007年03月07日(水) 14:18
今回は、あんまり申込数が増えていませんが(現在18名)、実は本日2007/03/07 23:59で申し込み締め切りとなります。
参加者を見ると、少し強面?っぽい雰囲気がありますが、初学者ももちろん気軽に参加いただけます(ノートPCが無くても大丈夫ですし、初Pythonでも大丈夫)。
申し込みは、このリンク先ページの一番下から。
PHPのPRhaggerに興味のある方も、中の人がいますので是非。
PythonエクスプローラでDjangoに興味を持った人も是非。仲間ができますよ。
TurboGearsの小田切さんも来るかもしれない(申し込み済み)。
む?濃すぎる?気にしないでー
mysql.sockがデフォルトの場所に無い場合
2007年03月04日(日) 21:48
豪商さんが、DjangoでMySQLにつなげなくて困っている模様。
実のところ、MySQLはいろいろな問題をはらんでいて推奨はされていないんだけど、使ってる人が多いのでフォロー!
たとえば、MAMPなんか使ってMySQLをいれたりするとmysql.sockの場所がデフォルトと違っちゃう訳です。いつもlnをしてごまかしていましたが、困っている人がいると調べてみたくなります。
DjangoのMySQLバックエンドのソースコードを見るとsettings.DATABASE_HOSTが半角スラッシュで始まっている場合かつMySQLを使っている場合に、settings.DATABASE_HOSTをunix_socketの位置としてMySQLdbに設定をしているようです(MySQLdbのコンパイルオプションかと思ってMySQLdbをチェックしたけどMySQLdb的にはコネクションの引数で渡せるようなので、MySQLdbをゴニョゴニョし直す必要はありません)。
実際のところ、DATABASE_HOSTのドキュメントを見れば設定可能なことが書いてあるのですが、豪商さんにコメントしようとしたところ認証を求められてしまったのでエントリにしてみた次第です。
豪商さんは、sennaにも興味があるようなのでDjango勉強会 Disc3にいらっしゃると幸せになれると思いますぞw
Django勉強会 Disc3
2007年03月04日(日) 01:00
Python Developers Campに来ていてすっかり忘れていましたが、Django勉強会 Disc3の申し込みが始まっています。
2時間近くたってもまだ半分くらいキャパあります。
今回は、Sennaの中の人グニャラくんのDjangoでSennaや、rhacoの中の人がrhaco勉強会を中でやったり、面白いことに成ると思います。
もしかするとDjangoAMFでFlex2みたいなデモも再び見られるかもしれません。
Djangoでブログを作りたい人は、MiCHiLUさんにブログの作り方を学べます。
DreamhostでDjangoを使いたい人はドメイン取得から利用までを目指します!
きになるキーワードのあった方はお早めに
関西PythonWorkshop 01
2007年03月01日(木) 00:00
遂に関西でもPyJUG主催のPythonWorkshopが開催されます。
しかも、初回からymasuda.jpの増田さんによるDjangoの紹介セッション!
んー、大阪かぁ、行か・れないよなぁ。
リンク先はまだ編集中な模様&ウェブシャークさん達によるインターネット中継があるかも
