我尝试创建一个通用的表格来列出django_tables
对象。我已经完成了所有工作,只有User
对象上的get_absolute_urls()
返回:
/users/<username>/
虽然我可以创建这个URL,但它与网站布局不匹配,所以我正在寻找另一种方法来实现这个目标。有没有一种方法可以覆盖这个值而不破坏内置的身份验证和其他功能?我尝试创建一个通用的表格来列出django_tables
对象。我已经完成了所有工作,只有User
对象上的get_absolute_urls()
返回:
/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.7开始,django.contrib.auth.models.AbstractUser
不再定义get_absolute_url()
方法(参见发布说明)。
因此,如果使用的是django > v1.7,OP的问题将不会存在,因为您仍然需要定义您自己的get_absolute_url()
方法。
现在有两种方法可以做到这一点:
get_absolute_url()
方法。ABSOLUTE_URL_OVERRIDES
设置创建(而不是覆盖)User.get_absolute_url()
。def get_absolute_url(self):
return f"/user/{self.id}/"` 放在哪里?
- 丶 Limeー来夢 丶