2015-11-02 100 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時纔會執行測試,因此錯誤從未在我們的開發環境中觸發。一旦設置,錯誤消失。

相關問題