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

来源:互联网 发布:三国名将法宝进阶数据 编辑:程序博客网 时间:2024/04/20 09:01

#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



原创粉丝点击