【问题标题】:Django decorator generates SiteProfileNotAvailable errorDjango 装饰器生成 SiteProfileNotAvailable 错误
【发布时间】:2011-02-21 21:54:13
【问题描述】:

这里是 Python (2.6) 和 Django (1.2) 的新手,学习技巧。考虑以下我想在方法上使用的装饰器,以及@login_required,如果他们尝试做一些需要“提供的最少信息”配置文件的事情,它会将用户重定向到配置文件完成 url。

使用模式旨在:

@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 101,但 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'

【问题讨论】:

    标签: python django decorator


    【解决方案1】:

    在我看来,您的 settings.py 中的配置文件设置有误。它应该看起来像这样:<app>.<model> 这正是django 所抱怨的。检查您的设置。

    【讨论】:

    • 太棒了!我被我正在编写一个装饰器并忽略了我面前的东西这一事实蒙蔽了双眼。
    • 如果你的应用是myapps.account怎么办?例如'myapps.account' in settings.INSTALLED_APPS
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2022-01-09
    • 2015-11-18
    • 2018-11-21
    • 1970-01-01
    • 2023-03-25
    • 2013-06-08
    相关资源
    最近更新 更多