Python Django视图错误';布尔';对象没有属性';用户';

Python Django视图错误';布尔';对象没有属性';用户';,python,django,Python,Django,我尝试打开url时收到以下错误消息: Request Method: GET Request URL: http://localhost:8000/core/jmc/material/generate Django Version: 1.8 Exception Type: AttributeError Exception Value: 'bool' object has no attribute 'user' Exception Location: /usr/local/lib/pytho

我尝试打开url时收到以下错误消息:

Request Method: GET
Request URL:    http://localhost:8000/core/jmc/material/generate
Django Version: 1.8
Exception Type: AttributeError
Exception Value: 'bool' object has no attribute 'user'
Exception Location: /usr/local/lib/python2.7/dist-packages/django/contrib/auth/decorators.py in _wrapped_view, line 21
此外,回溯如下所示:

File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
132.                     response = wrapped_callback(request,   *callback_args, **callback_kwargs)

File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/decorators.py" in _wrapped_view
22.                 return view_func(request, *args, **kwargs)

File "/home/dev/Documents/Program Codes/Python/Django/Zeus2/core/project/jmc.py" in jmc_material_generator
168.         jmc_material_generator(False)

File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/decorators.py" in _wrapped_view
21.             if test_func(request.user):
我的看法如下:

@login_required(login_url='login')
def jmc_material_generator(request):
    # Permission level check
    if request.user.groups.all()[0].name not in ['Super-Admin', 'Admin']:
        return redirect('index')

    with transaction.atomic():
        jmc_material_generator(False)
return redirect('index')

视图函数名与第8行调用的函数相同(
jmc\u material\u generator(False)
)。这反过来又会再次调用视图函数,并传入布尔值而不是请求对象。当导入到
view.py
文件时,需要重命名视图函数或重命名
jmc\u material\u生成器(False)
import

# you can do import x as X which renamed the imported function
from ... import jmc_material_generator as jmc_generator

@login_required(login_url='login')
def jmc_material_generator(request):
    # Permission level check
    if request.user.groups.all()[0].name not in ['Super-Admin', 'Admin']:
        return redirect('index')

    with transaction.atomic():
        jmc_generator(False) # notice the rename of this function
return redirect('index')

视图函数名与第8行调用的函数相同(
jmc\u material\u generator(False)
)。这反过来又会再次调用视图函数,并传入布尔值而不是请求对象。当导入到
view.py
文件时,需要重命名视图函数或重命名
jmc\u material\u生成器(False)
import

# you can do import x as X which renamed the imported function
from ... import jmc_material_generator as jmc_generator

@login_required(login_url='login')
def jmc_material_generator(request):
    # Permission level check
    if request.user.groups.all()[0].name not in ['Super-Admin', 'Admin']:
        return redirect('index')

    with transaction.atomic():
        jmc_generator(False) # notice the rename of this function
return redirect('index')

从您的trackback中,似乎您以某种方式将
False
传递给jmc.py中的
jmc_material_生成器
,这解释了异常:“bool”对象没有属性“user”从参数中删除“False”,我得到“_wrapped_view()至少接受1个参数(给定0)”。您应该将django的
HttpRequest
传递给
jmc_material_generator
,当用户访问路由到
jmc_material_generator
视图的url时,您通常会得到该请求。如果我注释掉“jmc_material_generator(False)”,似乎效果不错。我认为这个函数是如何干扰登录所需的装饰器的,这不应该是这样的。实际上我犯了一个愚蠢的错误,我只是将视图和函数命名为相同的。从你的trackback中,似乎你不知何故将
False
传递给了jmc.py中的
jmc\u material\u生成器
,这解释了异常:“bool”对象没有属性“user”从参数中删除“False”,我得到的是“\u wrapped\u view()至少接受1个参数(给定0)”。您应该将django的
HttpRequest
传递给
jmc\u material\u生成器
,当用户访问路由到
jmc_material_generator
视图的url时,通常会得到它。如果我注释掉“jmc_material_generator(False)”,它似乎可以正常工作。我认为这个函数是如何干扰登录所需的decorator的,不应该是这样。我实际上犯了一个愚蠢的错误,我只是将视图和函数命名为相同的。