我正在尝试制作一个用于列出django_tables
对象的通用表。我已经让一切正常,除了get_absolute_urls()
我的User
对象返回:
/users/<username>/
虽然我可以创建此 URL,但它与站点布局的其余部分不匹配,因此我正在寻找另一种方法来执行此操作。有没有办法在不破坏内置身份验证和其他功能的情况下覆盖这个值?
我正在尝试制作一个用于列出django_tables
对象的通用表。我已经让一切正常,除了get_absolute_urls()
我的User
对象返回:
/users/<username>/
虽然我可以创建此 URL,但它与站点布局的其余部分不匹配,因此我正在寻找另一种方法来执行此操作。有没有办法在不破坏内置身份验证和其他功能的情况下覆盖这个值?
您可以使用设置在 settings.py 文件中执行此操作ABSOLUTE_URL_OVERRIDES
ABSOLUTE_URL_OVERRIDES = {
'auth.user': lambda u: "/users/%s/" % u.username,
}
这是官方文档的链接:https ://docs.djangoproject.com/en/stable/ref/settings/
作为旁注:
由于 django v1.7django.contrib.auth.models.AbstractUser
不再定义get_absolute_url()
方法(请参阅发行说明)。
因此 django > v1.7 将不存在 OP 的问题,因为您无论如何都需要定义您的自定义get_absolute_url()
方法。
现在有两种方法可以做到这一点:
get_absolute_url()
在您的用户模型扩展中定义一个方法。User.get_absolute_url()
整个ABSOLUTE_URL_OVERRIDES
设置。