在 Django auth 中设置 `get_absolute_url`

Posted

技术标签:

【中文标题】在 Django auth 中设置 `get_absolute_url`【英文标题】:Set `get_absolute_url` in Django auth 【发布时间】:2015-07-01 04:29:43 【问题描述】:

我正在使用 Django 的内置身份验证模型。

如何设置get_absolute_url 而不用自定义身份验证模型替换整个身份验证模型?

【问题讨论】:

【参考方案1】:

您需要替换用户模型。但是你可以简单地从AbstractUser继承,它已经为你定义了所有的字段,所以你只需要重写你想要的方法:

class MyUser(AbstractUser):
    def get_absolute_url(self):
        return ...

然后只需在 settings.py 中执行 AUTH_USER_MODEL = 'my_app.MyUser',就可以开始了。

【讨论】:

谢谢。我可以对内置模型Group做同样的事情吗?【参考方案2】:

您可以从内置模型继承,例如User

class Author(User):
    def get_absolute_url(self):
        return what_you_want

更新

我的第一个答案和接受的一样,但是在与提问的人沟通后,我做了一些改变。但为什么我总是被投票否决?请先看评论。

【讨论】:

但是我是否必须更换内置模型才能使用此模型?我想在我引用用户模型的模板中的任何地方使用 author.get_absolute_url 等。 那我建议你使用OneToOneField,这样你就可以像User.author.get_absolute_url一样使用了 但是我有很多不同的模型都引用了用户模型,所以我不想在所有模型中都创建get_absolute_url 方法。 您可以像我在回答中所做的那样定义一个模型,并且所有many different models 现在都可以引用新模型。所以你不需要在所有模型中都创建get_absolute_url 方法,只需要一个。

以上是关于在 Django auth 中设置 `get_absolute_url`的主要内容,如果未能解决你的问题,请参考以下文章

在 django 中设置自定义用户注册表单的样式

如何在django中设置用邮箱也可以登录?

django admin中设置密文操作密码

django-rest-auth + django-allauth + angular2

在 Nuxt auth-module 中设置令牌

如何在 Moya 中设置基本的 auth 用户名和密码?