1

我想做以下事情:

  • 我想更改用户 django.auth 类中的 get_absolute_url 方法。

我怎样才能做到这一点?

4

3 回答 3

4

如果您使用 Django 1.5 或更高版本,那么您可以在自定义模型get_absolute_url上重新定义实例方法User

在 1.5 之前,实现此目的的唯一干净方法是创建自己的代理模型来代替django.contrib.auth.models.User,并使用get_aboslute_url实例方法来构造不遵循/users/%username%/模式的绝对 url。

于 2013-09-24T17:00:21.193 回答
2

如果 Django User 类可以满足您的需求,您可以扩展它。来自Django.Contrib.Auth文档:

扩展 Django 的默认用户

如果您对 Django 的 User 模型完全满意并且只想添加一些额外的配置文件信息,您可以简单地继承 django.contrib.auth.models.AbstractUser 并添加您的自定义配置文件字段。此类提供默认用户的完整实现作为抽象模型。

例如:

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 中引入的可交换用户。

于 2013-09-24T17:20:06.393 回答