you tag register forget did python django settings

python - did you forget to register or load this tag



Django: configurada incorrectamente: la configuración SECRET_KEY no debe estar vacía (13)

Estoy intentando configurar varios archivos de configuración (desarrollo, producción, ...) que incluyen algunas configuraciones básicas. No puede tener éxito sin embargo. Cuando trato de ejecutar ./manage.py runserver recibo el siguiente error:

(cb)clime@den /srv/www/cb $ ./manage.py runserver ImproperlyConfigured: The SECRET_KEY setting must not be empty.

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

(cb)clime@den /srv/www/cb/cb/settings $ ll total 24 -rw-rw-r--. 1 clime clime 8230 Oct 2 02:56 base.py -rw-rw-r--. 1 clime clime 489 Oct 2 03:09 development.py -rw-rw-r--. 1 clime clime 24 Oct 2 02:34 __init__.py -rw-rw-r--. 1 clime clime 471 Oct 2 02:51 production.py

Configuración básica (contiene SECRET_KEY):

(cb)clime@den /srv/www/cb/cb/settings $ cat base.py: # Django base settings for cb project. import django.conf.global_settings as defaults DEBUG = False TEMPLATE_DEBUG = False INTERNAL_IPS = (''127.0.0.1'',) ADMINS = ( (''clime'', ''[email protected]''), ) MANAGERS = ADMINS DATABASES = { ''default'': { #''ENGINE'': ''django.db.backends.postgresql_psycopg2'', # Add ''postgresql_psycopg2'', ''mysql'', ''sqlite3'' or ''oracle''. ''ENGINE'': ''django.db.backends.postgresql_psycopg2'', ''NAME'': ''cwu'', # Or path to database file if using sqlite3. ''USER'': ''clime'', # Not used with sqlite3. ''PASSWORD'': '''', # Not used with sqlite3. ''HOST'': '''', # Set to empty string for localhost. Not used with sqlite3. ''PORT'': '''', # Set to empty string for default. Not used with sqlite3. } } # Local time zone for this installation. Choices can be found here: # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # although not all choices may be available on all operating systems. # In a Windows environment this must be set to your system time zone. TIME_ZONE = ''Europe/Prague'' # Language code for this installation. All choices can be found here: # http://www.i18nguy.com/unicode/language-identifiers.html LANGUAGE_CODE = ''en-us'' SITE_ID = 1 # If you set this to False, Django will make some optimizations so as not # to load the internationalization machinery. USE_I18N = False # If you set this to False, Django will not format dates, numbers and # calendars according to the current locale. USE_L10N = False # TODO: make this true and accustom date time input DATE_INPUT_FORMATS = defaults.DATE_INPUT_FORMATS + (''%d %b %y'', ''%d %b, %y'') # + (''25 Oct 13'', ''25 Oct, 13'') # If you set this to False, Django will not use timezone-aware datetimes. USE_TZ = True # Absolute filesystem path to the directory that will hold user-uploaded files. # Example: "/home/media/media.lawrence.com/media/" MEDIA_ROOT = ''/srv/www/cb/media'' # URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash. # Examples: "http://media.lawrence.com/media/", "http://example.com/media/" MEDIA_URL = ''/media/'' # Absolute path to the directory static files should be collected to. # Don''t put anything in this directory yourself; store your static files # in apps'' "static/" subdirectories and in STATICFILES_DIRS. # Example: "/home/media/media.lawrence.com/static/" STATIC_ROOT = ''/srv/www/cb/static'' # URL prefix for static files. # Example: "http://media.lawrence.com/static/" STATIC_URL = ''/static/'' # Additional locations of static files STATICFILES_DIRS = ( # Put strings here, like "/home/html/static" or "C:/www/django/static". # Always use forward slashes, even on Windows. # Don''t forget to use absolute paths, not relative paths. ) # List of finder classes that know how to find static files in # various locations. STATICFILES_FINDERS = ( ''django.contrib.staticfiles.finders.FileSystemFinder'', ''django.contrib.staticfiles.finders.AppDirectoriesFinder'', # ''django.contrib.staticfiles.finders.DefaultStorageFinder'', ) # Make this unique, and don''t share it with anybody. SECRET_KEY = ''8lu*6g0lg)9z!ba+a$ehk)xt)x%rxgb$i1&amp;022shmi1jcgihb*'' # List of callables that know how to import templates from various sources. 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'', # Uncomment the next line for simple clickjacking protection: # ''django.middleware.clickjacking.XFrameOptionsMiddleware'', ) ROOT_URLCONF = ''cb.urls'' # Python dotted path to the WSGI application used by Django''s runserver. WSGI_APPLICATION = ''cb.wsgi.application'' TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don''t forget to use absolute paths, not relative paths. ''/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'', ''south'', ''grappelli'', # must be before admin ''django.contrib.admin'', ''django.contrib.admindocs'', ''endless_pagination'', ''debug_toolbar'', ''djangoratings'', ''watson'', ''web'', ) AUTH_USER_MODEL = ''web.User'' # A sample logging configuration. The only tangible logging # performed by this configuration is to send an email to # the site admins on every HTTP 500 error when DEBUG=False. # See http://docs.djangoproject.com/en/dev/topics/logging for # more details on how to customize your logging configuration. LOGGING = { ''version'': 1, ''disable_existing_loggers'': False, ''filters'': { ''require_debug_false'': { ''()'': ''django.utils.log.RequireDebugFalse'' } }, ''formatters'': { ''standard'': { ''format'' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", ''datefmt'' : "%d/%b/%Y %H:%M:%S" }, }, ''handlers'': { ''mail_admins'': { ''level'': ''ERROR'', ''filters'': [''require_debug_false''], ''class'': ''django.utils.log.AdminEmailHandler'' }, ''null'': { ''level'':''DEBUG'', ''class'':''django.utils.log.NullHandler'', }, ''logfile'': { ''level'':''DEBUG'', ''class'':''logging.handlers.RotatingFileHandler'', ''filename'': "/srv/www/cb/logs/application.log", ''maxBytes'': 50000, ''backupCount'': 2, ''formatter'': ''standard'', }, ''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'': { ''handlers'': [''console''], ''level'': ''DEBUG'', ''propagate'': False, }, ''web'': { ''handlers'': [''console'', ''logfile''], ''level'': ''DEBUG'', }, }, } LOGIN_URL = ''login'' LOGOUT_URL = ''logout'' #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'': False, } 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)clime@den /srv/www/cb/cb/settings $ cat development.py from base import * DEBUG = True TEMPLATE_DEBUG = True ALLOWED_HOSTS = [''127.0.0.1'', ''31.31.78.149''] DATABASES = { ''default'': { ''ENGINE'': ''django.db.backends.postgresql_psycopg2'', ''NAME'': ''cwu'', ''USER'': ''clime'', ''PASSWORD'': '''', ''HOST'': '''', ''PORT'': '''', } } 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)clime@den /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") from django.core.management import execute_from_command_line execute_from_command_line(sys.argv)

Si agrego from base import * a /srv/www/cb/cb/settings/__init__.py (que de lo contrario está vacío), mágicamente comienza a funcionar, pero no entiendo por qué. ¿Alguien podría explicarme qué está pasando aquí? Debe ser un poco de magia de módulo de pitón.

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 comienza a funcionar:

from endless_pagination.templatetags import endless

Supongo que es porque, al final, conduce a

from django.conf import settings PER_PAGE = getattr(settings, ''ENDLESS_PAGINATION_PER_PAGE'', 10)

Por lo tanto, crea algunas cosas circulares extrañas y se acaba el juego.


Comienza a funcionar porque en base.py tiene toda la información necesaria en un archivo de configuración básica. Necesitas la línea:

SECRET_KEY = ''8lu*6g0lg)9z!ba+a$ehk)xt)x%rxgb$i1&amp;022shmi1jcgihb*''

Por lo tanto, funciona y cuando lo hace from base import * , importa SECRET_KEY en su development.py .

Siempre debe importar la configuración básica antes de realizar cualquier configuración personalizada.

EDITAR: Además, cuando django importa el desarrollo de su paquete, inicializa todas las variables dentro de la base desde que definió from base import * dentro de __init__.py


Creo que es el error de entorno , debe intentar configurar: DJANGO_SETTINGS_MODULE=''correctly_settings''


En mi caso, el problema era que tenía mi app_folder y settings.py en ella. Luego decidí hacer la Settings folder dentro de la Settings folder app_folder , y eso app_folder una colisión con settings.py . Acabo de renombrar esa Settings folder , y todo funcionó.


Me encontré con el mismo problema después de reestructurar la configuración según las instrucciones del libro de Daniel Greenfield Two scoops of Django .

Resolví el problema estableciendo

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings.local")

en manage.py y wsgi.py


No había especificado el archivo de configuración:

python manage.py runserver --settings=my_project.settings.develop


Para arrojar otra solución potencial a la mezcla, tenía una carpeta de settings , así como un settings.py en mi directorio de proyecto. (Estaba cambiando de los archivos de configuración basados ​​en el entorno a un archivo. Desde entonces, he reconsiderado).

Python estaba confundido sobre si quería importar project/settings.py o project/settings/__init__.py . Eliminé el directorio de settings y ahora todo funciona bien.


Resolví este problema eliminando los espacios alrededor de signos iguales ( = ) en mi archivo .env .


Resolví este problema en 1.8.4 al arreglar las configuraciones de TEMPLATES que tenían un error tipográfico (al eliminar TEMPLATES [''debug''] lo resolvió)

Revise la configuración que ha cambiado recientemente, asegúrese de que todas las claves estén en el libro.


Resolví este problema que ocurre en OS X con Django 1.5 y 1.6 desactivando todas las sesiones activas a virtualenv y comenzando de nuevo.


Solo quería agregar que obtuve este error cuando el nombre de mi base de datos se deletreaba mal en mi archivo settings.py , por lo que no se pudo crear el DB.


Tuve el mismo error con python manage.py runserver .

Para mí, resultó que fue debido a un archivo binario compilado añejo (.pyc). Después de eliminar todos esos archivos en mi proyecto, el servidor comenzó a ejecutarse nuevamente. :)

Entonces, si obtienes este error, de la nada, es decir, sin hacer ningún cambio aparentemente relacionado con la configuración django, esta podría ser una buena primera medida.


Tuve el mismo error y resultó ser una dependencia circular entre algo cargado por la configuración y el módulo de configuración en sí. En mi caso, era una clase de middleware que fue nombrada en la configuración que intentó cargar la configuración.


Eliminar archivos .pyc

Comando del terminal de Ubuntu para eliminar .pyc: find . -name "*.pyc" -exec rm -rf {} /; find . -name "*.pyc" -exec rm -rf {} /;

Tengo el mismo error cuando lo hice python manage.py runserver. Fue porque el archivo .pyc. Borré el archivo .pyc del directorio del proyecto y luego funcionó.