読者です 読者をやめる 読者になる 読者になる

牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

勝手にチュートリアル4.4 ユーザ認証でログイン

Django

ユーザ認証的なことがしたいので下記サイトを参考にやってみた。っていうかほぼそのままコピペ。
参考サイト

(2008.3.4訂正/index.htmlが複数あると管理しにくいのでファイル名を変更。)


まず、ルートディレクトリのurls.pyに下記を追加。(#login-out-memberから下のとこ)

urlpatterns = patterns('',
                       # Uncomment this for admin:
                       (r'^admin/', include('django.contrib.admin.urls')),
                       # polls (tutorial)
                       (r'^polls/', include('mysite.polls.urls')),
                       # login-out-member
                       (r'^login/', 'django.contrib.auth.views.login',
                        {'template_name': 'login/login.html'}),
                       # 訂正前{'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/member.html'}),
                        #訂正前{'template': 'member/index.html'}),
)

で次に、templateをば
とりあえずbase.htmlのメニューにLOGINとMEMBERを追加。(一応、メニュー順をABOUT最後に)

          <li><a href="/login/" title="LOGIN"><span class="num">03.</span>LOGIN;</a></li>
          <li><a href="/member/" title="MEMBER"><span class="num">04.</span>MEMBER;</a></li>
          <li><a href="/about/" title="ABOUT"><span class="num">05.</span>ABOUT;</a></li>

次にログイン画面。
ルート/template/login/index.html
ルート/template/login/login.html
にファイルを作り以下書き込む。

{% extends "base.html" %}
{% block title %}Site : login{% endblock %}

{% block main %}

{% 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>
 <p><a href="/logout/" mce_href="/logout/" >ログアウト</a></p>
{% endif %}

{% endblock %}

それからメンバーページ。
ルート/template/member/index.html
ルート/template/member/member.html
にファイルを作り以下書き込む

{% extends "base.html" %}
{% block title %}menber page{% endblock %}

{% block main %}

{% if user.is_anonymous %}
<p><h3>まだログインしていません</h3></p>
<p><a href="/login/" mce_href="/login/" >ログインはこちら</a></p>

{% else %}
<h2>メンバーページ</h2>
<p>ただ今ログイン中です。ここはメンバーのみが閲覧できるページです。</p>
<p><a href="/logout/" mce_href="/logout/" >ログアウトする</a></p>
{% endif %}

{% endblock %}

ログイン画面からユーザ名とパスをいれてメンバー画面が表示されるのを確認。
できた(゚Д゚)

とりあえずできたけど、新規ユーザ登録どうしよう?