2012-03-06 26 views
9

Tôi đang cố sử dụng trình trang trí @login_required nhưng tôi nhận được 'WSGIRequest' object has no attribute 'user' AttributeError. Tôi có tuyên bố nhập from django.contrib.auth.decorators import login_required ở trên cùng nhưng tôi vẫn gặp lỗi. Khi tôi xóa @login_required từ phía trước def profile(request) trong views.py của tôi, sự cố sẽ biến mất nhưng khi tôi đặt vấn đề vào đó, sự cố vẫn còn đó.Gỡ rối đối tượng 'WSGIRequest' không có thuộc tính 'người dùng'?

lớp Middleware từ setting.py

MIDDLEWARE_CLASSES = (
    #~ 'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    #~ 'django.middleware.csrf.CsrfViewMiddleware', 
    #~ 'django.contrib.auth.middleware.AuthenticationMiddleware', 
    #~ 'django.contrib.messages.middleware.MessageMiddleware', 
) 
+0

Bạn có thể đăng cài đặt MIDDLEWARE_CLASSES của mình không? – jpic

+0

yep. hy vọng rằng sẽ giúp. –

Trả lời

10

Bạn cần phải bật 'django.contrib.auth.middleware.AuthenticationMiddleware', bởi vì nó đặt request.user. Bạn cũng nên bật phần mềm trung gian mặc định khác hoặc bạn sẽ gặp phải các sự cố khác.

+0

Không sao, vui lòng [đóng câu hỏi] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – jpic

3

Câu hỏi của OP có thể được trả lời, nhưng tôi đến đây vì tôi đã gặp phải lỗi này trên dự án Django đã được bật AuthenticationMiddleware và đã chạy thành công trong một thời gian.

Vấn đề hóa ra là tôi đã truy cập vào máy chủ bằng URL khác, không được định cấu hình trong ALLOWED_HOSTS. Điều này đã ném một ngoại lệ SuspiciousOperation và trình xử lý Lỗi 500 của chúng tôi đang cố định tuyến này đến trang Django-CMS.

Thật không may, bởi vì các lỗi xảy ra quá sớm trong yêu cầu, không phải tất cả các trung gian đã được xử lý, và usercurrent_page đã không được bổ sung vào đối tượng request, vì vậy Django-CMS chết từ nhiều vết thương khi cố gắng để render trang, che khuất lỗi thực trong quá trình.

Tôi đã phải sử dụng runserver và chèn pdb điểm ngắt để gỡ lỗi này, bởi vì chạy dưới mod_wsgi làm cho nó không thể sử dụng trình gỡ lỗi tương tác, và backtrace không hữu ích.

Các vấn đề liên quan