django...
TRANSCRIPT
DjangoとPHPの仲間たち
What's Django?
What ' s D jango
● Pythonのフレームワーク● インストール簡単● コマンドを実行するだけで自動生成しまくり● SQLを書かずにCREATEからJOINまでできる● 設定ファイルがものすごくシンプル● 設定ファイル=Pythonのコード● 管理画面が超リッチ● RailsよりDRY(だと俺は思う)
DjangoとPHPの仲間たち
私がDjangoを始めるに至った理由
DjangoとPHPの仲間たち
1.LL Ringで隣でDjango使ってる人がいた
1 . L L R i n g で 隣 で D j a n g o 使 っ て る 人 が い た
● やたら開発が早い● 管理ツールが秀逸● 管理ツールはデザインも悪くない● なんか既存で用意されてる機能が多い。● とりあえずEthnaよりは早く開発できそう
DjangoとPHPの仲間たち
2.Pythonいいよね
2 .Py thonがいいよね
● 日本語のドキュメント揃いまくり(http://www.python.jp/Zope/links/python_documents)
● Linuxならほぼデフォルトで入ってるしWinでもインスコ簡単
● CYDNのドキュメントもあるし!(http://cydn.cybozu.co.jp/files/python_survey_at_cydn.html)
DjangoとPHPの仲間たち
3.Djangoはドキュメントありすぎ。
3 .D jangoはドキュメントありすぎ。
Pythonのインストールからはじまるinstallの解説チュートリアルは4つもある。しかも大量のFAQもつい
てくる
http://www.djangoproject.com/
3 .D jangoはドキュメントありすぎ。
日本語化までされている(しかも追従のスピードがハンパない=パネェ)
http://ymasuda.jp/python/django/index.html
3 .D jangoはドキュメントありすぎ。
デザイナー向けのドキュメントまである(!?)http://ymasuda.jp/python/django/docs/templates.html
しかもSmartyと雰囲気が似ててすぐ覚えられそう
– まとめ Why D jango?
● LL RingでDjango使ってる人いた。スゲー● Python自体がPHPよりいいよね● DjangoもPythonも日本語ドキュメントある
Django とPHPの仲間たち
EthnaとDjangoを比較してみる
Ethna vs D jango
What's Ethna
What ' s E thna
● http://ethna.jp/● PHP Framework● looks life Mojavi(MVC,Filter,etc)● FormValidator(ActionForm)● Multi Gateway(WWW,CLI,XML-RPC)● Template System(Smarty or etc)● Plugin System(alpha)
Ethna vs D jango
Install
Ethna vs D jango – I ns ta l l E thna
● pear channel-discover pear.ethna.jp● pear install ethna/ethna● pear install DB● pear install http://labs.cybozu.co.jp/blog/tsuruoka/archives/Smarty-2.6.14.tgz
Ethna vs D jango – I ns ta l l D jango
● tar xzvf Django-0.95.tar.gz● cd Django-0.95● sudo python setup.py install
Ethna vs D jango
Generate project
Ethna vs D jango
Ethna
$ ethna add-project Mysite /home/user/
Django
$django-admin.py startproject mysite($python manage.py startapp myapp)
Ethna vs D jango
Database Control(CREATE TABLE)
Ethna vs D jango – D jango Mag ic
Django:Django Magic
[models.py]from django.db import models
class Poll(models.Model): question = models.CharField(maxlength=200) pub_date = models.DateTimeField('date published')
class Choice(models.Model): poll = models.ForeignKey(Poll)poll = models.ForeignKey(Poll) choice = models.CharField(maxlength=200) votes = models.IntegerField()
Ethna vs D jango – D jango Mag ic
$python manage.py syncdb
Ethna vs D jango D jango Mag ic
Ethna vs D jango - E thna
Ethna:Execute query raw PHP or *Admin
CREATE TABLE "polls_poll" ( "id" serial NOT NULL PRIMARY KEY, "question" varchar(200) NOT NULL, "pub_date" timestamp with time zone NOT NULL);CREATE TABLE "polls_choice" ( "id" serial NOT NULL PRIMARY KEY, "poll_id" integer NOT NULL REFERENCES "polls_poll" ("id"), "choice" varchar(200) NOT NULL, "votes" integer NOT NULL);
Ethna vs D jango
URL Handling
Ethna vs D jango
Django:
[urls.py]from django.conf.urls.defaults import *
urlpatterns = patterns('', (r'^polls/$', 'mysite.polls.views.index'), (r'^polls/(?P<poll_id>\d+)/$', 'mysite.polls.views.detail'), (r'^polls/(?P<poll_id>\d+)/results/$', 'mysite.polls.views.results'), (r'^polls/(?P<poll_id>\d+)/vote/$', 'mysite.polls.views.vote'),)
Ethna vs D jango
Ethna:[Mysite_UrlHandler.php] var $action_map = array( 'task' => array( 'task' => array( 'path' => 'task', 'path_regexp' => '|task/([\d]+)$|', 'path_ext' => array('id' => array()), ), 'rss' => array( 'path' => 'rss', 'path_regexp' => '|rss/(.*)$|', 'path_ext' => array('user' => array()), ), 'taskadd' => array( 'path' => 'task/add', ), ), );