django-registrationのメモ
djangoでユーザー登録するライブラリとしてはdjango-registrationが一番ポピュラーみたいなので、さわってみました。
とりあえず動かしてみたってだけなので、使ったことのある人にとってはこのエントリから得るものは多分ないです。
1. インストール
pip install django-registration
2. INSTALLED_APPSにregistrationを追加
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', # 他のアプリとか 'registration' # 追加 )
3. settings.py にACCOUNT_ACTIVATION_DAYSを追加
ACCOUNT_ACTIVATION_DAYS=7
4. メール送信設定を追加
とりあえず動かすだけなのでgmailを使いました
DjangoでGmailを使ってメール送信
http://d.hatena.ne.jp/yuheiomori0718/20120714/1342266647
EMAIL_USE_TLS = True EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = 'youremail@gmail.com' # 使用するgmailアカウント EMAIL_HOST_PASSWORD = 'yourpassword' # 使用するgmailアカウントのパスワード EMAIL_PORT = 587
5. urls.pyを修正
urls.py
urlpatterns = patterns('', # 他のurl定義 url(r'^accounts/', include('registration.backends.default.urls')), )
6. テンプレート追加
以下のレポジトリにひと通りのものがコミットされているので使わせていただきました。
https://github.com/yourcelf/django-registration-defaults
テンプレートはbase.htmlをextendsしてますので用意しておきます。base.htmlには{% block content %}{% endblock %}が必要です。
7. 動かす
あとはsyncdb、runserverすれば、ひと通り動かせるはずです。
http://localhost:8000/accounts/register/ からユーザー登録するとメールが届きます。
リンクはexample.comになっちゃってますのでそのまま踏んでもだめです。localhost:8000に変えてアクセスすればユーザー登録が完了します。
メールのリンクをアクセスすればユーザー登録が完了します。
http://localhost:8000/accounts/login/でログインできます。
ログイン後は/accounts/profileにリダイレクトされます。リダイレクト先を変更したい場合はsettings.pyにLOGIN_REDIRECT_URLで定義します
LOGIN_REDIRECT_URL = "/"