2016-10-05 5 views
0

Довольно новый для Django. Работа над вторым проектом после учебного курса «Опросы» на веб-сайте Django. Предыдущее усилие прошло хорошо, хотя и просто. На этот раз возникли проблемы с доступом к логину администратора.Вход администратора admin в Django Запрещен 403 Ошибка CSRF. Запрос прерван

Я создал суперпользователя и использовать эти учетные данные, когда я пытаюсь войти в http://127.0.0.1:8000/admin/login/?next=/admin/ я получаю следующее сообщение об ошибке:

Forbidden (403) 
CSRF verification failed. Request aborted. 
Reason given for failure: 
    CSRF cookie not set. 

Глядя на this и this, большинство ответов либо подробно очистка куки браузера (это сделал), укажите 'django.middleware.csrf.CsrfViewMiddleware' в вашем промежуточном программном обеспечении (что я и делаю), или создав исключение или обходное решение.

1) Мой вопрос в том, почему админ-портал, похоже, не работает сейчас, но это было для моего предыдущего проекта, и я выполняю те же шаги?

2) Не должны ли свойства для админ-панели наследоваться через инициирование проекта?

3) Как установить CSRF для администратора, когда the documentation указывает, что промежуточное ПО CSRF активировано по умолчанию?

Спасибо за любую помощь.

settings.py

""" 
Django settings for aptly project. 

Generated by 'django-admin startproject' using Django 1.9.7. 

For more information on this file, see 
https://docs.djangoproject.com/en/1.9/topics/settings/ 

For the full list of settings and their values, see 
https://docs.djangoproject.com/en/1.9/ref/settings/ 
""" 

import os 
import dj_database_url 

from .secret_settings import * 

# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) 
PROJECT_DIR = os.path.join(PROJECT_ROOT,'../search') 


# Quick-start development settings - unsuitable for production 
# See https://docs.djangoproject.com/en/1.9/howto/deployment/checklist/ 

# SECURITY WARNING: don't run with debug turned on in production! 
DEBUG = True 

ALLOWED_HOSTS = [] 



# Application definition 

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'search', 
] 

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

ROOT_URLCONF = 'aptly.urls' 

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
     }, 
    }, 
] 

WSGI_APPLICATION = 'aptly.wsgi.application' 


# Database 
# https://docs.djangoproject.com/en/1.9/ref/settings/#databases 

DATABASES = { 
    'default': { 
     "ENGINE": "django.db.backends.postgresql_psycopg2", 
     "NAME": "db_name", 
     "USER": "me", 
     "PASSWORD": "", 
     "HOST": "localhost", 
     "PORT": "", 
    } 
} 

# Password validation 
# https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators 

AUTH_PASSWORD_VALIDATORS = [ 
    { 
     'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 
    }, 
    { 
     'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 
    }, 
    { 
     'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 
    }, 
    { 
     'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 
    }, 
] 


# Internationalization 
# https://docs.djangoproject.com/en/1.9/topics/i18n/ 

LANGUAGE_CODE = 'en-us' 

TIME_ZONE = 'UTC' 

USE_I18N = True 

USE_L10N = True 

USE_TZ = True 


# Static files (CSS, JavaScript, Images) 
# https://docs.djangoproject.com/en/1.9/howto/static-files/ 

STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root') 

# Extra places for collectstatic to find static files. 
STATICFILES_DIRS = (
    os.path.join(PROJECT_DIR, 'static'), 
) 

# Simplified static file serving. 
# https://warehouse.python.org/project/whitenoise/ 

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' 

#DATABASES['default'] = dj_database_url.config() 

urls.py

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
from . import views 

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^admin/', admin.site.urls), 
] 

Каталог

project 
-aptly 
--settings.py 
--urls.py 
--wsgi.py 
-search 
--templates 
---index.html 
--models.py 
--urls.py 
--views.py 
manage.py 
+1

Вы используете 'custom html templates' для учетной записи администратора? – cutteeth

+0

@cutteeth Нет. Я добавил urls.py, чтобы вы могли видеть здесь. У меня есть несколько html-шаблонов, над которыми я работаю, но ни один из них не должен быть запутан для учетной записи администратора. – Jebediah15

+0

добавьте свое мнение, где вы вызываете шаблон, вероятно, вызывают проблемы –

ответ

0

Вы настраиваете SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') Удалите эту строку и проверьте, не решена ли эта проблема. Если вы включили https csrf will work only as per the specifications of https. Существует возможность включения https и обслуживания вашего веб-сайта с сервера, отличного от https. Кроме того, вы пробовали в другом браузере после очистки куки или в режиме частного/инкогнито? Иногда эта ошибка возникает, потому что csrf cookie is not set correctly. Попробуйте inspecting your request/response headers с консоли браузера.

+0

Я удалил 'SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')' полностью из settings.py, но ошибка остается. – Jebediah15

+0

можете ли вы опубликовать весь файл settings.py, а также структуру вашего каталога шаблонов? Вы используете сервер с помощью './manage.py runningerver'? – cutteeth

+0

просто загрузил все 'settings.py'. Да, я запускаю './manage.py runningerver' – Jebediah15

0

У меня нет ни малейшего понятия, почему это ответ, но я вошел и обновил свой Django до текущей версии. По какой-то причине это решило проблему ...

pip install --upgrade django==1.10.2 
0

Такая же проблема возникла и со мной.

На самом деле проблема заключалась в том, что мой Django приложение не использовал зависимостей из виртуальной среды даже была активирована.

Я установил Django 1.8 в мою систему и Django 1.11.2 в виртуальной среде.

Так что проблема была в версии Django версии.

Наконец я установил вопросы следующим образом,

1) Удаляется/Переименован virtualenv и создал новый

rm -rf venv && virtualenv venv 

2) Активированный virtualenv

на MAC

source ./venv/bin/activate 

на Windows,

.\venv\Scripts\activate 

3) Установленные зависимости от пип-requirements.txt файл (если у вас есть в противном случае вам нужно будет установить зависимости отдельно)

pip install -r pip-requirements.txt 

4) После этого я начал запускать сервер разработки (python manage.py runningerver) и попробуйте войти в систему. Это будет работать.

Проверьте также pip freeze does not show all installed packages.

Смежные вопросы