Django装饰器生成SiteProfileNotAvailable错误
我是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
在抱怨的地方。你可以检查一下你的设置。