我想做以下事情:
我该怎么做?
答案 0 :(得分:4)
如果您使用的是Django 1.5或更高版本,则可以在custom User
model课程中重新定义get_absolute_url
实例方法。
在1.5之前,实现此目的的唯一干净方法是创建自己的proxy model代替django.contrib.auth.models.User
,使用get_aboslute_url
实例方法构建绝对网址不要遵循/users/%username%/
模式。
答案 1 :(得分:2)
如果Django User类可以满足您的需求,您可以扩展它。来自Django.Contrib.Auth文档:
扩展Django的默认用户
如果您对Django的用户模型完全满意并且您只想添加一些其他配置文件信息,则可以简单地继承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)
答案 2 :(得分:0)
如果是get_absolute_url
,您可以使用ABSOLUTE_URL_OVERRIDES
setting
ABSOLUTE_URL_OVERRIDES = {
'auth.user': lambda user: "/users/%s/" % user.username,
}
覆盖其他方法需要使用Django 1.5中引入的可交换用户。