メモ書き
ちょっと頭でまだまとまりきってないけど、メモ書き。
URLPatterns
authモジュールを使ったときの、ログインフォームの変更方法
手順としては、urls.pyにloginURLなどを書き足し、settings.pyにも一文継ぎ足す。
- まず、urls.pyに下記のを継ぎ足す。
urlpatterns += patterns('', # # Loginメソッド # URL: /login # template: regist/login.html (r'^login$', 'django.contrib.auth.views.login', {'template_name':'regist/login.html'}), # # Logoutメソッド # URL: /logout # template: regist/logout.html (r'^logout$', 'django.contrib.auth.views.logout', {'template_name':'regist/logout.html'}), # # パスワード…なんだっけ? # URL: /regist/password # template: regist/password_reset.html (r'^reset/password$', 'django.contrib.auth.views.password_reset', {'template_name':'regist/password_reset.html'}), # # パスワードリセットフォーム # URL: /password_reset/ # template: regist/password_reset_form.html パスワードフォーム # : regist/password_reset_email.html メールアドレスで確認するための入力欄 (r'^password_reset/$', 'django.contrib.auth.views.password_reset', {'template_name':'regist/password_reset_form.html', 'email_template_name':'regist/password_reset_email.html'}), # # パスワード変更受付完了フォーム # URL: /password_reset/done/ # template: regist/password_reset_done.html (r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done', {'template_name':'regist/password_reset_done.html'}), # # よぐわがんね (r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm', {'template_name':'regist/password_reset_confirm.html'}), # # 変更完了フォーム # URL: /reset/done/ # template: regist/password_reset_complete.html (r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete', {'template_name':'regist/password_reset_complete.html'}), )
- settings.py に継ぎ足し
# auth module setting LOGIN_URL = '/login'
UserModelを拡張
authモジュールには、UserModelが標準でついてきますが、幾分か足りない部分があります。それを補う方法。
settings.pyで設定して、アプリケーションのモデルでモデルを作成します。作成するモデルは一部分規則があるので、ご注意。
以下の例では、accountアプリケーションに、lip_userモデルをUserの拡張したものとして使います。
- settings.py
# User's extens AUTH_PROFILE_MODULE="account.lip_user"
- account.lip_user
# # Userクラス class lip_user (models.Model): user = models.ForeignKey(User, unique=True) display_name = models.CharField(max_length=120) pic = models.ImageField(upload_to='/media/user/%Y%m%d/', default='/media/user/default.png') description = models.TextField() birth = models.DateField(default=datetime.date(1989,1,1)) is_show_birth_year = models.BooleanField(default=True) is_show_birth_mday = models.BooleanField(default=False) address = models.ForeignKey(userAddresses) def __unicode__(self): return ("%s -- id:%s" % (self.display_name, self.user.username)) class Meta: verbose_name = _('User Profile') verbose_name_plural = _('User Profile')
- 利用例
from django.contrib.auth.model import User u = User.objects.get(name='yasui') u_profile = u.get_profile() # 拡張した物を取得 u_profile.display_name = u"安井" # 拡張フィールドを変更 u_profile.description = u"説明書き" # 同上 u_profile.save() # u.save() しても、変更したプロフィールの部分は保存してないっぽい。