Pythonってのは、僕はあまり良く分かってなくて「簡単なRuby」って言ったらPython使いの方に怒られるかもしれないが読んでみるとそんな感想。
もうRuby知ってるなら、方言を広島弁から大阪弁に変えるぐらいのかんじであまり導入コストは高くないと僕は判断してます。
ちなみに、このサイトはお勧めです。Ruby使いはこれで覚えたと思うんだけどそれをPythonにしてくれてるいいサイトです。
「Pythonレシピ」
http://lightson.dip.jp/zope/ZWiki/PythonRecipe
俺的にはlen(str)とかをstr.lengthってなぜしない!って不満はあるけど。。。
飯が出来るまでの間に環境を作ってみたんだけど上手くいかなかったので備忘録(最近Linuxいじってない)。
Djangoのサーバってデフォで127.0.0.1:8000で起動するんで、仮想マシンで起動したらホスト側のブラウザで見れないんだよね。
軽くハックしてみる。
$ find /usr/local/lib/python2.5 | xargs grep runserver
/usr/local/lib/python2.5/site-packages/django/core/management/commands/testserver.py: call_command('runserver', addrport=addrport, shutdown_message=shutdown_message, use_reloader=False)
バイナリー・ファイル/usr/local/lib/python2.5/site-packages/django/core/management/commands/runserver.pycは一致しました
バイナリー・ファイル/usr/local/lib/python2.5/site-packages/django/core/management/commands/testserver.pycは一致しました
/usr/local/lib/python2.5/site-packages/django/core/management/commands/runserver.py: raise CommandError('Usage is runserver %s' % self.args)
call_commandってメソッドでaddrportってあるけど、それっぽい。
find /usr/local/lib/python2.5 | xargs grep addrport
/usr/local/lib/python2.5/site-packages/django/core/management/commands/testserver.py: make_option('--addrport', action='store', dest='addrport',
/usr/local/lib/python2.5/site-packages/django/core/management/commands/testserver.py: addrport = options.get('addrport')
/usr/local/lib/python2.5/site-packages/django/core/management/commands/testserver.py: call_command('runserver', addrport=addrport, shutdown_message=shutdown_message, use_reloader=False)
バイナリー・ファイル/usr/local/lib/python2.5/site-packages/django/core/management/commands/runserver.pycは一致しました
バイナリー・ファイル/usr/local/lib/python2.5/site-packages/django/core/management/commands/testserver.pycは一致しました
/usr/local/lib/python2.5/site-packages/django/core/management/commands/runserver.py: def handle(self, addrport='', *args, **options):
/usr/local/lib/python2.5/site-packages/django/core/management/commands/runserver.py: if not addrport:
/usr/local/lib/python2.5/site-packages/django/core/management/commands/runserver.py: addr, port = addrport.split(':')
/usr/local/lib/python2.5/site-packages/django/core/management/commands/runserver.py: addr, port = '', addrport
handleそれめちゃめちゃ怪しいじゃんって即分かった。
19 def handle(self, addrport='', *args, **options):
20 import django
21 from django.core.servers.basehttp import run, AdminMediaHandler, WSG IServerException
22 from django.core.handlers.wsgi import WSGIHandler
23 if args:
24 raise CommandError('Usage is runserver %s' % self.args)
25 if not addrport:
26 addr = ''
27 port = '8000'
28 else:
29 try:
30 addr, port = addrport.split(':')
31 except ValueError:
32 addr, port = '', addrport
33 if not addr:
34 addr = '127.0.0.1'
35
この部分で、どうもIPアドレスとポート番号をスプリットしてる。指定しない場合はデフォルト
で127.0.0.1:8000が指定されるはず。localhostで表示されない場合は、自分のホスト名がどうなっている
かhostsファイルを調べた方がいいだろう。
runserverの引数にIPアドレス:ポート番号を指定してやればいいのか。
$ python manage.py runserver 192.168.190.10:8000
おー、でましたね。