Archive@2006/07

Django tags for Dreamweaverを作ってみました

思い立ったので作ってみました。 DreamweaverでDjangoのテンプレートを編集するときに、 レイアウトが崩れるのに対応するものです。 クリックで拡大画像 こんな感じになります。 ↓ クリックで拡大画像クリックで拡大画像 Django tags for Dreamweaverのダウンロード アイコンは適当にDjangoっぽい緑で作ってあります。 Dreamweaverのデフォルトのインストールでは、 C:\Program Files\Macromedia\Dreamweaver 8\Configuration\ThirdPartyTags に解凍した中身を放り込めば動くと思います。 とりあえずDreamweaver MX 2004とDreamweaver 8では動作してました。
Posted at: 
2006/07/28 02:33:00
1 Comment
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2006/07/28/django-tags-for-dreamweaver/trackback/

Djangoで基本的なログイン・ログアウト処理をしてみる

【参考サイト】 Prosthetic Conscience - Generic views for login and logout http://www.carcosa.net/jason/blog/computing/django/gotchas-2006-04-19 2,3日前にメモったサイト↑に書いてあった、 GenericViewsを使ってログインっていうのを実践してみました。 でもこれってGenericViewsなんだろうか。 とりあえずviews.pyをまったく書かずに実装はできました。 自分が使ってるリビジョン(3380)では、urls.pyが参考サイトのままだとだめでした。 こんな感じにしてみました。
#urls.py from django.conf.urls.defaults import * urlpatterns = patterns('’, (r’^login/’, ‘django.contrib.auth.views.login’, {’template_name’: ‘login/index.html’}), (r’^logout/’, ‘django.contrib.auth.views.logout_then_login’, {’login_url’: ‘/login/’}), (r’^member/’, ‘django.views.generic.simple.direct_to_template’, {’template’: ‘member/index.html’}), )
django.contrib.auth.views.loginは、 ログイン処理とログインフォーム表示用のViewです。 デフォルトだとテンプレートがregistration/login.html になってるので、login/index.htmlに変えてます。 django.contrib.auth.views.logout_then_loginは、 ログアウト処理後、ログインページに飛ばすViewです。 引数のlogin_urlは絶対パスを指定した方がいいのかな。 django.views.generic.simple.direct_to_templateは、 指定したテンプレートを表示するだけのViewです。 ここでは、ログイン後のページ/member/で表示するテンプレートを指定しています。
#login/index.html {% if user.is_anonymous %} <form method=”post” action=”./?next=/member/”> {% if form.username.errors %} <span style=”color:red”>{{ form.username.errors|join:”, ” }}</span> <br /> {% endif %} <label for=”username”> ユーザ名: </label> {{ form.username }} <br /> {% if form.password.errors %} <span style=”color:red”>{{ form.password.errors|join:”, ” }}</span> <br /> {% endif %} <label for=”password”> パスワード: </label> {{ form.password }} <br /> <input type=”submit” value=”ログイン” /> </form> {% else %} <p>{{ user.username }}さん、こんにちは。</p> {% endif %}
bodyタグとかは書いてませんが、ログインページのhtmlです。 {% if user.is_anonymous %}{% endif %}で、 ログインしてるかどうかをチェックしてます。 falseの場合、ログイン状態ですのでフォームの変わりに挨拶を出してみます。
actionの引数にはnextを渡します。認証に成功するとこのURLに飛びます。 ここでは/member/に飛ばしてます。 form.username.errors、form.password.errors には各種エラーが入ってくれます。
#member/index.html {% if user.is_anonymous %} <p><a href=”/login/” mce_href=”/login/” >こちらからログインしてください</a></p> {% else %} <h1>メンバーページ</h1> <p><a href=”/logout/” mce_href=”/logout/” >ログアウト</a></p> {% endif %}
何もないメンバーページです。 URL直で来た場合は、ログインページに飛ばします。 ログイン完了している場合は、ログアウトのリンクを表示します。 ログアウトするとログイン画面に戻ります。 以上でViewを書かずにログイン・ログアウトができました。
Posted at: 
2006/07/20 01:30:38
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2006/07/20/django-genericviews-auth/trackback/

Djangoでブックマークアプリを作る その4

【関連記事】 Djangoでブックマークアプリを作る http://blog.monospace.jp/2006/07/09/django-bookmark-1/ Djangoでブックマークアプリを作る その2 http://blog.monospace.jp/2006/07/09/django-bookmark-2/ Djangoでブックマークアプリを作る その3 http://blog.monospace.jp/2006/07/09/django-bookmark-3/ 今回はviewの部分を作ります。 view.pyというファイルを編集して作っていく訳なんですが、 今回はシンプルなページを表示するだけなので、 DjangoのGenericViewという機能を利用してみます。 この機能は、一般的によくあるタイプのView、 データベースから引っ張ってきたデータをページに表示するとかを たいそう簡単にしてくれる機能です。 ちなみにブックマークアプリ基本編は今回で終わりにしようかと思います。 次回拡張編もあるといううわさです。 スクリーンキャストでViewを作る部分を再現してみました。 スクリーンキャスト(約18MB) URL設定ファイルでGenericViewの設定をする。 データベースから引っ張ってきたデータを全部表示する場合には、 GenericViewのobject_listを使います。 ここでは、object_listにbookmarkというデータを割り当ててます。 デフォルトでは、bookmark_listというhtmlを作成することになります。 Djangoのテンプレート記法は、PHPのSmartyみたいな感じなんで使いやすいです。 そんなわけで、超簡単なアプリができました。 次回は、どうやらDjangoで作るブログアプリらしいです。よくあるよくある。
Posted at: 
2006/07/14 02:44:07
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2006/07/14/django-bookmark-3-2/trackback/

Djangoでブックマークアプリを作る その3

【関連記事】 Djangoでブックマークアプリを作る http://blog.monospace.jp/2006/07/09/django-bookmark-1/ Djangoでブックマークアプリを作る その2 http://blog.monospace.jp/2006/07/09/django-bookmark-2/ 早速前回の続きです。 adminをちょっとパワーアップしようと思います。 model.pyをこんな感じにしました。 日本語混じってるんで、encodingを指定してます。 文字コード関係はよくわからないですが、これでも動いてるっぽいです。 間違ってたらどなたか教えてください。
#vim: fileencoding=utf-8 from django.db import models class Tag(models.Model): title = models.CharField(maxlength=30) summary = models.CharField(maxlength=100) def __str__(self): return self.title class Admin: list_display = (”title”, “summary”,) class Meta: verbose_name = ‘タグ’; #Tagの別名 verbose_name_plural = ‘タグ’; #別名の複数形 class Bookmark(models.Model): url = models.URLField(unique=True) tags = models.ManyToManyField(Tag, filter_interface=models.HORIZONTAL) date = models.DateField(auto_now_add=True) def __str__(self): return self.url def selected_tags(self): ‘'’タグのtitleのリストを返す”’ return [x.title for x in self.tags.all()] class Admin: list_display = (”url”, “selected_tags”, “date”,) list_filter = (”tags”, “date”) #フィルターを有効にする項目 date_hierarchy = ‘date’ class Meta: ordering = [’-date’] verbose_name = ‘ブックマーク’ verbose_name_plural = ‘ブックマーク’
今日もスクリーンキャストしてみました。 マウスの迷いがw とりあえず何が変わったかはだいたい分かるかと思います。 右のサイドバーにフィルターがついてたり、 テーブルの上のところをクリックするとソートができたり。 ブックマーク追加のところで、タグの選択方法が高度になってたり。 ユニークキーを指定してる場合は、重複チェックが入ってエラーになったり。 あと、地味に「Bookmark」が「ブックマーク」になってたりします。 とりあえずこれだけでも十分ですが、まだまだadminの機能はあります。 adminは終了して、「表」部分作ってみます。
Posted at: 
2006/07/11 01:55:50
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2006/07/11/django-bookmark-3/trackback/

Djangoでブックマークアプリを作る その2

【関連記事】 Djangoでブックマークアプリを作る http://blog.monospace.jp/2006/07/09/django-bookmark-1/ modelを書いてDBのテーブルも作ったので、adminにアクセスします。 よくある簡易的なCRUDを実現したってものではなくてちゃんとしたadminです。 ちょっとしたスクリーンキャストを作ってみました。 スペルミスとか気にしないでくださいw とりあえずタグの追加・削除・編集ができます。 しかもブックマークの方を追加するときには、ちゃんとタグを選ぶ項目があります。 これは、model.pyで書いた
tags = models.ManyToManyField(Tag)
これのおかげです。 ManyToManyFieldでは多対多のリレーションを実現してるので、 ブックマーク追加の際に、タグを複数選択できるようになってます。 こんな感じで、モデルで定義したフィールドに合わせてadminがお世話してくれます。 すばらしいです。 次はadminをもっと便利にしてみようかなと。
Posted at: 
2006/07/10 00:00:42
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2006/07/10/django-bookmark-2/trackback/

Djangoでブックマークアプリを作る

ありがちなWebアプリ第1段でブックマークアプリでも作ってみます。 最初はほんとに基本的なやつで。 まずは、アプリケーションの雛形作成
$ django-admin.py bookmark $ ls bookmark __init__.py __init__.pyc models.py models.pyc views.py
構成は非常にシンプルです。 最初に作る予定のものは、この中のmodels.pyしか編集しません。 それでもちゃんとしたものができちゃうんだな。
#[models.py] from django.db import models class Tag(models.Model): title = models.CharField(maxlength=30) summary = models.CharField(maxlength=100) def __str__(self): return self.title class Admin: pass class Bookmark(models.Model): url = models.URLField(unique=True) tags = models.ManyToManyField(Tag) date = models.DateField(auto_now_add=True) def __str__(self): return self.url class Admin: pass
いわゆるモデルですね。 TagとBookmarkというクラスを作ってますが、これはDBの定義になってるわけで、 $ python manage.py sql bookmark で、models.pyで書いたものがsqlになって表示されます。 ここで、setting.pyを編集。
#[setting.pyから一部抜粋] INSTALLED_APPS = ( ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.sites’, ‘django.contrib.admin’, ‘monospace.bookmark’, )
django.contrib.admin monospace.bookmarkを追加。 そしたらDBテーブルを作成。 $ python manage.py syncdb 途中で、admin用のユーザー作成があったような。 あとは、url.pyの #(r’^admin/’, include(’django.contrib.admin.urls’)), ↓ (r’^admin/’, include(’django.contrib.admin.urls’)), で完成。 開発用サーバを使えば、 $ python manage.py runserver http://localhost:8000/admin/ にいけば、syncdbの時に使ったIDでログインして、感動的なAdminへ。 続く・・・予定。
Posted at: 
2006/07/09 01:05:20
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2006/07/09/django-bookmark-1/trackback/