如何修改django auth.user 的默认get_absolute_url值

#Django#User的urls设置问题在你使用了UserProfile之后将会出现一个问题,就是User Model 的get_absolute_url在django的auth app中默认是/users/<username>/, 如果你已经扩展实现了一个UserProfile的话,你可能需要使用userprofile.get_absolute_url来使用,那么你需要重新定义auth.user的绝对url了.

auth.models 中的user的get_absolute_url是这样定义的:

    def get_absolute_url(self):
        return "/users/%s/" % urllib.quote(smart_str(self.username))

这里定死了吧,但是django还是给了方法来修改它.

方法就是:在settings.py中增加一个设置:ABSOLUTE_URL_OVERRIDES 

ABSOLUTE_URL_OVERRIDES = {
    'blogs.weblog': lambda o: "/blogs/%s/" % o.slug,
    'news.story': lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug),
}

所以对auth.user来说,要修改就按照下面的来:


ABSOLUTE_URL_OVERRIDES = {
 'auth.user': lambda u: "/member/profile/%s/" % u.username,
 #其他的设置 
} 


官方文档:https://docs.djangoproject.com/en/1.1/ref/settings/#absolute-url-overrides 

https://code.djangoproject.com/wiki/ReplacingGetAbsoluteUrl



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值