python - 从另一个 View 调用装饰器

标签 python django python-decorators

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

users/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”

在 View 中定义装饰器是否正确,如果不正确,我应该把它放在哪里,现在如何解决这个问题。

问候

最佳答案

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

1) 您是否成功将用户/views.py 中的任何内容导入到 profile/views.py 中?

2)你能粘贴你的项目结构吗? ( # ls -R)

关于python - 从另一个 View 调用装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34285438/

相关文章:

python - Django 加载对象以防唯一键重复

python - 如何修补 Python 的 datashape 中装饰器注册的方法?

python - 是否允许在抽象类中使用用户定义的装饰器?或者说,应该继承后使用吗?

python - 噪声二维阵列中的峰值检测

python - 迭代地将第一列中的文本与其他列中的现有文本组合

django - Django无法连接到gitlab ci中的postgres数据库

python - 装饰器 - 更改变量名称

python - unionAll 导致 StackOverflow

python - 为什么当我将光标传递给 StreamingHttpResponse 时,我的光标在生成器函数中已关闭?

django url 重写而不重定向