Django: incorrectamente configurado: la configuración SECRET_KEY no debe estar vacía

| | | | | | | | | |

Estoy tratando de configurar varios archivos de configuración (desarrollo, producción, ..) que incluyen algunas configuraciones básicas. Sin embargo, no puede tener éxito. Cuando intento ejecutar ./manage.py runserver obtengo el siguiente error:

(cb)[email protected] /srv/www/cb $ ./ manage.py runserver incorrectamente configurado: la configuración SECRET_KEY no debe estar vacía. 

Aquí está mi módulo de configuración:

(cb)[email protected] /srv/www/cb/cb/settings $ ll total 24 -rw- r-r--. 1 clima clima 8230 2 de octubre 02:56 base.py -rw-rw-r--. 1 clima clima 489 2 de octubre 03:09 desarrollo.py -rw-rw-r--. 1 clima clima 24 de octubre 2 02:34 __init__.py -rw-rw-r--. 1 clima clima 471 2 de octubre 02:51 production.py 

Configuración base (contiene SECRET_KEY):

(cb)[email protected] /srv/www /cb/cb/settings $ cat base.py: # Configuración base de Django para el proyecto cb. import django.conf.global_settings por defecto DEBUG = False TEMPLATE_DEBUG = False INTERNAL_IPS = ("127.0.0.1") ADMINISTRADORES = ( ("clime", "[email protected]"), ) ADMINISTRADORES = ADMINISTRADORES BASES DE DATOS = { "predeterminado ": { #"ENGINE": "django.db.backends.postgresql_psycopg2", # Agregar "postgresql_psycopg2", "mysql", "sqlite3" u "oracle". "MOTOR": "django.db.backends.postgresql_psycopg2", "NOMBRE": "cwu", # O ruta al archivo de la base de datos si usa sqlite3. "USER": "clime", # No se usa con sqlite3. "CONTRASEÑA": "", # No se usa con sqlite3. "HOST": "", # Establece una cadena vacía para localhost. No se usa con sqlite3. "PORT": "", # Establecer como cadena vacía por defecto. No se usa con sqlite3. } } # Zona horaria local para esta instalación. Las opciones se pueden encontrar aquí: # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # aunque es posible que no todas las opciones estén disponibles en todos los sistemas operativos. # En un entorno de Windows, esto debe establecerse en la zona horaria de su sistema. TIME_ZONE = "Europa/Praga" # Código de idioma para esta instalación. Todas las opciones se pueden encontrar aquí: # http://www.i18nguy.com/unicode/language-identifiers.html LANGUAGE_CODE = "en-us" SITE_ID = 1 # Si establece esto en False, Django hará algunas optimizaciones para que no # cargar la maquinaria de internacionalización. USE_I18N = Falso # Si establece esto en Falso, Django no formateará fechas, números y # calendarios de acuerdo con la configuración regional actual. USE_L10N = False # TODO: haga que esto sea verdadero y acostumbre la entrada de fecha y hora DATE_INPUT_FORMATS = valores predeterminados.DATE_INPUT_FORMATS + ("%d %b %y", "%d %b, %y") # + ("25 oct 13", " 25 oct, 13") # Si establece esto en False, Django no usará fechas y horas conscientes de la zona horaria. USE_TZ = True # Ruta absoluta del sistema de archivos al directorio que contendrá los archivos subidos por el usuario. # Ejemplo: "/home/media/media.lawrence.com/media/" MEDIA_ROOT = "/srv/www/cb/media" # URL que maneja los medios servidos desde MEDIA_ROOT. Asegúrese de usar una barra diagonal final #. # Ejemplos: "http://media.lawrence.com/media/", "http://example.com/media/" MEDIA_URL = "/media/" # Ruta absoluta al directorio en el que se deben recopilar los archivos estáticos. # No coloque nada en este directorio usted mismo; almacene sus archivos estáticos # en los subdirectorios apps" "static/" y en STATICFILES_DIRS. # Ejemplo: "/home/media/media.lawrence.com/static/" STATIC_ROOT = "/srv/www/cb/static" # Prefijo de URL para archivos estáticos. # Ejemplo: "http://media.lawrence.com/static/" STATIC_URL = "/static/" # Ubicaciones adicionales de archivos estáticos STATICFILES_DIRS = ( # Coloque cadenas aquí, como "/home/html/static" o "C :/www/django/static". # Siempre use barras diagonales, incluso en Windows. # No olvide usar rutas absolutas, no rutas relativas. ) # Lista de clases de búsqueda que saben cómo encontrar archivos estáticos en # varias ubicaciones STATICFILES_FINDERS = ("django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder", # "django.contrib.staticfiles.finders.DefaultStorageFinder", ) # Haz que esto sea único y no lo hagas" No lo compartas con nadie. SECRET_KEY = "8lu*6g0lg)9z!ba+a$ehk)xt)x%rxgb$i1&amp;022shmi1jcgihb*" # Lista de invocables que saben cómo importar plantillas de varias fuentes. TEMPLATE_LOADERS = ( "django.template.loaders.filesystem.Loader", "django.template.loaders.app_directories.Loader", # "django.template.loaders.eggs.Loader", ) TEMPLATE_CONTEXT_PROCESSORS = ( "django.contrib.auth .context_processors.auth", "django.core.context_processors.request", "django.core.context_processors.debug", "django.core.context_processors.i18n", "django.core.context_processors.media", "django.core .context_processors.static", "django.core.context_processors.tz", "django.contrib.messages.context_processors.messages", "web.context.inbox", "web.context.base", "web.context.main_search ", "web.context.enums", ) 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", "watson.middleware.SearchContextMiddleware", "debug_toolbar.middleware.DebugToolbarMiddleware ", "middleware.UserMemberMiddleware", "middleware.ProfilerMiddleware", "middleware.VaryOnAcceptMiddleware", # Quite el comentario de la siguiente línea para una protección simple contra el secuestro de clics: # "django.middleware.clickjacking.XFrameOptionsMiddleware", ) ROOT_URLCONF = "cb.urls" # Ruta punteada de Python a la aplicación WSGI utilizada por el servidor de ejecución de Django. WSGI_APPLICATION = "cb.wsgi.application" TEMPLATE_DIRS = ( # Coloque cadenas aquí, como "/home/html/django_templates" o "C:/www/django/templates". # Siempre use barras inclinadas, incluso en Windows. # Don "No olvide usar rutas absolutas, no rutas relativas. "/srv/www/cb/web/templates", "/srv/www/cb/templates", ) INSTALLED_APPS = ( "django.contrib.auth", "django .contrib.contenttypes", "django.contrib.sessions", "django.contrib.sites", "django.contrib.messages", "django.contrib.staticfiles", "sur", "grappelli", # debe estar antes admin "django.contrib.admin", "django.contrib.admindocs", "endless_pagination", "debug_toolbar", "djangoratings", "watson", "web", ) AUTH_USER_MODEL = "web.User" # Una configuración de registro de muestra El único registro tangible # realizado por esta configuración es enviar un correo electrónico a # los administradores del sitio en cada error HTTP 500 cuando DEBUG=False. # Consulte http://docs.djangoproject.com/en/dev/topics/logging para # más detalles sobre cómo personalizar su configuración de registro. REGISTRO = { "versión": 1, "disable_existing_loggers": Falso, "filtros": { "require_debug_false": { "()": "django.utils.log.RequireDebugFalse" } }, "formateadores": { "estándar": { " format" : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", "datefmt" : "%d/%b/%Y % H:%M:%S" }, }, "controladores": { "mail_admins": { "nivel": "ERROR", "filtros": ["require_debug_false"], "clase": "django.utils.log .AdminEmailHandler" }, "null": { "nivel":"DEPURACIÓN", "clase":"django.utils.log.NullHandler", }, "archivo de registro": { "nivel":"DEPURACIÓN", "clase" :"logging.handlers.RotatingFileHandler", "nombre de archivo": "/srv/www/cb/logs/application.log", "maxBytes": 50000, "backupCount": 2, "formateador": "estándar", }, "console":{ "level":"INFO", "class":"logging.StreamHandler", "formatter": "standard" }, }, "loggers": { "django.request": { "handlers": ["mail_admins"], "level": "ERROR", "propagate": True, }, "django": { "handlers":["console"], "propagate": True, "level":"WARN" , }, "django.db.backends": { "controladores": ["consola"], "nivel": "DEPURACIÓN", "propagar": Falso, }, "web": { "controladores": ["consola", "archivo de registro"], "nivel": "DEPURACIÓN", }, }, } LOGIN_URL = "iniciar sesión" LOGOUT_URL = "cerrar sesión" #ENDLESS_PAGINATION_LOADING = """ # <img src="/static/web/img/preloader.gif" alt="loading" style="margin:auto"/> #""" ENDLESS_PAGINATION_LOADING = """ <div class="spinner small" style="margin:auto"> <div class="block_1 spinner_block small"></div> <div class="block_2 spinner_block small"></div> <div class="block_3 spinner_block small"></div> </div> """ DEBUG_TOOLBAR_CONFIG = { "INTERCEPT_REDIRECTS": Falso, } import django.template.loader django.template.loader.add_to_builtins("web.templatetags.cb_tags") django.template.loader.add_to_builtins("web.templatetags.tag_library" ) WATSON_POSTGRESQL_SEARCH_CONFIG = "public.english_nostop" 

Uno de los archivos de configuración:

(cb)[email protected] /srv/www/cb/cb/ configuración $ cat development.py desde la importación base * DEBUG = True TEMPLATE_DEBUG = True ALLOWED_HOSTS = ["127.0.0.1", "31.31.78.149"] BASES DE DATOS = { "predeterminado": { "MOTOR": "django.db.backends. postgresql_psycopg2", "NOMBRE": "cwu", "USUARIO": "clima", "CONTRASEÑA": "", "HOST": "", "PUERTO": "", } } MEDIA_ROOT = "/srv/www/ cb/media/" STATIC_ROOT = "/srv/www/cb/static/" TEMPLATE_DIRS = ( "/srv/www/cb/web/templates", "/srv/www/cb/templates", )  

Código en manage.py:

(cb)[email protected] /srv/www/cb $ cat manage.py #!/ usr/bin/env python import os import sys if __name__ == "__main__": os.environ.setdefault ("DJANGO_SETTINGS_MODULE", "cb.settings.development") desde django.core.management import execute_from_command_line execute_from_command_line(sys.argv) 

Si agrego desde base import * en /srv/www/cb/cb/settings/__init__.py (que por lo demás está vacío), mágicamente comienza a funcionar, pero no entiendo por qué. ¿Alguien podría explicarme qué está pasando aquí? Debe ser algún módulo mágico de Python.

EDITAR: Todo también comienza a funcionar si elimino esta línea de base.py

django.template.loader.add_to_builtins("web.templatetags.cb_tags") 

Si elimino esta línea de web.templatetags.cb_tags, también empieza a funcionar:

from infinite_pagination.templatetags import infinite 

Supongo que es porque al final lleva a

desde django.conf import settings PER_PAGE = getattr(settings, "ENDLESS_PAGINATION_PER_PAGE", 10) 

Así que crea algunas cosas circulares extrañas y se acaba el juego.

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method