Archive@2006/07
思い立ったので作ってみました。
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/
【参考サイト】
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の場合、ログイン状態ですのでフォームの変わりに挨拶を出してみます。
- 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でブックマークアプリを作る
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でブックマークアプリを作る
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でブックマークアプリを作る
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/
ありがちな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/