Django装饰器生成SiteProfileNotAvailable错误

0 投票
1 回答
2380 浏览
提问于 2025-04-16 12:15

我是Python(2.6)和Django(1.2)的新手,正在学习基础知识。考虑一下我想在方法上使用的这个装饰器,配合@login_required使用,如果用户尝试做一些需要“提供最低信息”的操作,就会把他们重定向到一个完善个人资料的链接。

我打算的使用方式是:

@login_required
@min_profile_required
def my_view(request):
    # do whatever.

我目前对min_profile_required装饰器的定义如下:

def min_profile_required(decorated_view):
    @wraps(decorated_view)
    def redirector(request, *args, **kwargs):
        if ProfileHelper.is_min_profile_complete(request.user):
            return decorated_view(request, *args, **kwargs) 
        return HttpResponseRedirect(PROFILE_COMPLETION_URL)
    return redirector

对我来说,这感觉像是Python的基础知识,但Django对此并不友好。系统产生了以下错误:

SiteProfileNotAvailable at ...
app_label and model_name should be separated by a dot in the AUTH_PROFILE_MODULE setting

这个装饰器是“账户”应用的一部分,所以AUTH_PROFILE_MODULE设置并不属于这个装饰器定义所在的应用(或者说是使用它的应用)。

我觉得这应该很简单,所以一定有什么我没注意到的细节,可能和“装饰器链”有关?

任何帮助都非常感谢。

更新:这是我的个人资料设置。

AUTH_PROFILE_MODULE = 'cta.account.models.user_profile.UserProfile'

下面提供的答案:我的个人资料模型配置错误,应该是

AUTH_PROFILE_MODULE = 'account.UserProfile'

1 个回答

3

对我来说,你在settings.py文件里的配置设置好像有问题。它应该是这样的:<app>.<model>,而这正是django在抱怨的地方。你可以检查一下你的设置。

撰写回答