2016-09-13 15 views
6

Tương tự như câu hỏi này 'WSGIRequest' object has no attribute 'session'đối tượng 'WSGIRequest' không có thuộc tính 'phiên' trong khi nâng cấp từ django 1,3-1,9

Nhưng lớp Middleware của tôi là theo đúng thứ tự.

INSTALLED_APPS = [ 
    'django.contrib.sessions', 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'membership', 
    'treebeard', 
    'haystack', 
    'reversion', 
] 

MIDDLEWARE = [ 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.security.SecurityMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
] 

Tôi đang chuyển hướng để đăng nhập

url(r'^$', RedirectView.as_view(url='login/')), 
url(r'^login/$', 'membership.views.loginView', name='login'), 

và sau đó

def loginView(request): 
    a = request.session 

Ném lỗi

Trả lời

15

MIDDLEWARE là một cài đặt mới trong 1.10 sẽ dần thay thế cái cũ MIDDLEWARE_CLASSES.

Vì bạn hiện đang sử dụng phiên bản 1.9, Django không nhận ra cài đặt MIDDLEWARE. Bạn nên sử dụng các thiết lập MIDDLEWARE_CLASSES thay vì:

MIDDLEWARE_CLASSES = [ 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.security.SecurityMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
] 
3

Django 2,0

Bạn có thể thử điều này trong settings.py của bạn, MIDDLEWARE_CLASSES = [....]:

  • Thay đổi MIDDLEWARE_CLASSES = [...] tới MIDDLEWARE = [...]

  • Xóa SessionAuthenticationMiddleware từ danh sách MIDDLEWARE = ​​[...].

Thiết lập MIDDLEWARE_CLASSES bị phản đối trong Django 1.10, và loại bỏ trong Django 2.0.

Lớp SessionAuthenticationMiddleware bị xóa. Nó không cung cấp chức năng vì xác thực phiên được bật vô điều kiện trong Django 1.10.

0

Kiểm tra thứ tự của phần mềm trung gian, nếu bạn đang cố gắng truy cập nó trên một số phần mềm trung gian được liệt kê phía trên phần mềm trung gian phiên, bạn sẽ gặp phải lỗi này.

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