djangoでユーザ情報編集後にユーザページにリダイレクトする
環境
- django 1.8.7
- python 3.4.1
ユーザ情報を編集後にユーザページにリダイレクトしたい。
が、ユーザページはuser id に紐付いていてユーザごとにURIが違うようときがあります。
success_url = ~~
として適当にやってたんですが、ちょっとまじめにユーザページにリダイレクトしてみます。
なお、User はカスタムしたoriginal_auth を利用。User でも同様に行けるはず。
views を修正
// original_auth/views.py from django.views.generic.edit import UpdateView from original_auth.models import OriginalUser class OriginalUserUpdateView(UpdateView): model = OriginalUser # リダイレクトさせるurl を動的に変更させるため、success_url の行をコメントアウト。 # models.py にて get_absolute_url 関数を定義する。 # success_url = "/" context_object_name = 'user_data' fields = '__all__' exclude = ['password']
models を修正
// original_auth/models.py from django.contrib.auth.models import AbstractUser,AbstractBaseUser,PermissionsMixin,UserManager class OriginalUser(AbstractBaseUser,PermissionsMixin): : # get_absolute_url を次のように追加する def get_absolute_url(self): return "/user/%i/" % self.id
参考 https://docs.djangoproject.com/en/dev/ref/models/instances/#get-absolute-url