2015-11-02 95 views
2

我有问题升级后的Django 1.4〜1.5
,当我在设置:
DEBUG =假
这样的代码:Django的AttributeError的: 'WSGIRequest' 对象有没有属性 '用户'

def get_cart(request): 
    """ 
    Returns cart for user or None if cart does not exist, 
    means that user didn't add item to it. 
    """ 
    shop_cart = None 
    if request.user.is_authenticated(): 
     try: 
      shop_cart = ShoppingCart.objects.get(customer=request.user) 
     except ShoppingCart.DoesNotExist: 
      pass 
    else: 
     cart_id = request.session.get('cart_id', None) 
     try: 
      shop_cart = ShoppingCart.objects.get(pk=cart_id) 
     except ShoppingCart.DoesNotExist: 
      pass 
    return shop_cart 

给我的错误:
AttributeError的: 'WSGIRequest' 对象有没有属性 '用户'
但是当我设置
DEBUG =真
所以一切正常

你知道任何人在哪里是问题,为什么在生产模式下它给了我错误?

感谢

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.middleware.http.ConditionalGetMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
) 

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth', 
    'django.contrib.messages.context_processors.messages', 
    'django.core.context_processors.i18n', 
    'django.core.context_processors.request', 
    'django.core.context_processors.media', 
    'django.core.context_processors.static', 
    'django.core.context_processors.request', 
    'eshopwisepress.wp_core.context_processors.request_absolute_path', 
    'eshopwisepress.wp_core.context_processors.domain', 
) 

回答

1

您需要更改您的中间件为了

'django.contrib.auth.middleware.AuthenticationMiddleware' 
'django.contrib.sessions.middleware.SessionMiddleware', 
+0

我改变了顺序,但同样的错误。当我有DEBUG = True时,应用程序给我错误:Django身份验证中间件需要安装会话中间件。 –

+0

@MartinJablečník现在你可以把你的'TEMPLATE_CONTEXT_PROCESSORS' – levi

+0

现在我在这里添加TEMPLATE_CONTEXT_PROCESSORS。 –

1

我们也有类似的问题,升级到Django的1.5后。 在我们的例子中,虽然我们从未在设置文件中设置ALLOWED_HOSTS。根据Django 1.5 documentation,只有在DEBUG = False时才会执行测试,因此错误从未在我们的开发环境中触发。一旦设置,错误消失。

相关问题