从另一个视图调用装饰器

时间:2015-12-15 09:29:04

标签: python django python-decorators

我在users / views.py中定义了一个装饰器,我想在django中的profile / views.py中使用相同的

用户/ views.py中的

装饰器功能

def is_active_consult(f):
    def wrap(request, *args, **kwargs):
        try:
            usrid = request.session['id']
            user = CustomUser.objects.get(id=usrid)
            usercons =    Userconsultation.objects.get(doctor=user.doctor,status='InProgress')
        except ObjectDoesNotExist:
            usercons = ''

        if usercons:
            url = '/encounter_notes/'+str(usercons.userconsultationid)
            return HttpResponseRedirect(url)
        else:
            return f(request, *args, **kwargs)

    return wrap

当我尝试导入时

from users.views import is_active_consult

它出现导入错误“无法导入名称is_active_consult”

在视图中定义装饰器是否正确,如果不是在哪里放置它,现在我该如何解决问题。

此致

1 个答案:

答案 0 :(得分:1)

装饰器是一个像任何其他函数一样的函数,因此您可以在任何地方定义它,问题不是装饰器而是导入本身:导入循环,错误路径或未设置等等。

1)您是否成功将任何内容从users / views.py导入profile / views.py?

2)您可以粘贴项目结构吗? (#ls -R)