1

私は次のことをしたい:

  • User django.auth クラスの get_absolute_url メソッドを変更したい。

どうやってやるの?

4

3 に答える 3

4

Django 1.5 以降を使用している場合は、カスタムモデルクラスget_absolute_urlでインスタンス メソッドを再定義できます。User

1.5 より前では、これを実現するための唯一の明確な方法は、パターンに従わない絶対 URL を構築するインスタンス メソッドを使用して、代わりに独自のプロキシ モデルを作成することでした。django.contrib.auth.models.Userget_aboslute_url/users/%username%/

于 2013-09-24T17:00:21.193 に答える
2

Django User クラスが必要に応じて適切である場合は、それを拡張できます。Django.Contrib.Authドキュメントから:

Django のデフォルト ユーザーの拡張

Django の User モデルに完全に満足していて、追加のプロファイル情報を追加したい場合は、単純に django.contrib.auth.models.AbstractUser をサブクラス化し、カスタム プロファイル フィールドを追加できます。このクラスは、デフォルトの User の完全な実装を抽象モデルとして提供します。

例えば:

from django.contrib.auth.models import AbstractUser

class MyUser(AbstractUser):

    def get_absolute_url(self):
        return '/somepath/user/%s/' % urlquote(self.username)
于 2013-09-24T17:06:57.090 に答える
0

設定get_absolute_urlを使用してこのメ​​ソッドをオーバーライドできる場合ABSOLUTE_URL_OVERRIDES

ABSOLUTE_URL_OVERRIDES = {
    'auth.user': lambda user: "/users/%s/" % user.username,
}

他のメソッドをオーバーライドするには、Django 1.5 で導入されたスワップ可能な User を使用する必要があります。

于 2013-09-24T17:20:06.393 に答える