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

現在このブログは中途半端に移行されていますので、画像が表示されなかったり、レイアウトが崩れたりする可能性があります。
この記事を旧ブログで閲覧するには、以下のURLからご覧ください。
http://blog2.monospace.jp/2006/07/20/django-genericviews-auth/

【参考サイト】 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/

TrackBacks

まだ登録されていません。

Comments

まだ登録されていません。

Add Comment

Add Comment