Eine bessere settings.py
Bei einem frischen Django-Projekt ist so ziemlich die erste Änderung bei mir die settings.py.
Es gibt einige Sachen, die fehlen in der Grundkonfiguration immer. So z.B. der request-Context-Prozessor, Caching-Einstellungen oder die Mailserver-Einstellungen (ich betreibe lokal keinen SMTP). Daneben natürlich noch die Sachen, die ich in Wiederverwendbare Django-Projekte gepostet habe.
Irgendwann habe ich mir mal eine generische settings.py erstellt in der ich auf Anhieb alle, für mich nötigen, Einstellungen vorfinde und diese mit sinnvollen Werten vorgeingestellt. Bei jedem neuen Projekt überschreibe ich die settings.py zuerst einmal mit dieser Variante. Vielleicht findet es ja jemand interessant. ![]()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | import os PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) PROJECT_NAME = os.path.split(PROJECT_ROOT)[-1] # ============================================================================== # debug settings # ============================================================================== DEBUG = True TEMPLATE_DEBUG = DEBUG INTERNAL_IPS = () if DEBUG: TEMPLATE_STRING_IF_INVALID = 'STRING_NOT_SET' # ============================================================================== # cache settings # ============================================================================== CACHE_BACKEND = 'locmem://' CACHE_MIDDLEWARE_KEY_PREFIX = '%s_' % PROJECT_NAME CACHE_MIDDLEWARE_SECONDS = 600 # ============================================================================== # email and error-notify settings # ============================================================================== ADMINS = ( # ('Your Name', 'your_email@example.com'), ) MANAGERS = ADMINS DEFAULT_FROM_EMAIL = 'from-mail@example.com' SERVER_EMAIL = 'error-notify@example.com' EMAIL_SUBJECT_PREFIX = '[%s] ' % PROJECT_NAME EMAIL_HOST = 'localhost' EMAIL_PORT = 25 EMAIL_HOST_USER = '' EMAIL_HOST_PASSWORD = '' EMAIL_USE_TLS = False # ============================================================================== # auth settings # ============================================================================== LOGIN_URL = '/accounts/login/' LOGOUT_URL = '/accounts/logout/' LOGIN_REDIRECT_URL = '/' # ============================================================================== # database settings # ============================================================================== DATABASE_ENGINE = 'sqlite3' DATABASE_NAME = os.path.join(PROJECT_ROOT, 'dev.db') DATABASE_USER = '' DATABASE_PASSWORD = '' DATABASE_HOST = '' DATABASE_PORT = '' # ============================================================================== # i18n and url settings # ============================================================================== TIME_ZONE = 'Europe/Berlin' LANGUAGE_CODE = 'de' LANGUAGES = (('en', 'English'), ('de', 'German')) USE_I18N = True SITE_ID = 1 MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'site_media') MEDIA_URL = '/media/' ADMIN_MEDIA_PREFIX = '/django_admin_media/' ROOT_URLCONF = '%s.urls' % PROJECT_NAME # ============================================================================== # application and middleware settings # ============================================================================== INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', 'django.contrib.humanize', ) MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.middleware.http.ConditionalGetMiddleware', # 'django.middleware.gzip.GZipMiddleware', 'django.middleware.common.CommonMiddleware', ) TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.auth', 'django.core.context_processors.debug', 'django.core.context_processors.i18n', 'django.core.context_processors.media', 'django.core.context_processors.request', ) TEMPLATE_DIRS = ( os.path.join(PROJECT_ROOT, 'templates'), ) TEMPLATE_LOADERS = ( 'django.template.loaders.filesystem.load_template_source', 'django.template.loaders.app_directories.load_template_source', # 'django.template.loaders.eggs.load_template_source', ) # ============================================================================== # the secret key # ============================================================================== try: SECRET_KEY except NameError: SECRET_FILE = os.path.join(PROJECT_ROOT, 'secret.txt') try: SECRET_KEY = open(SECRET_FILE).read().strip() except IOError: try: from random import choice SECRET_KEY = ''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)]) secret = file(SECRET_FILE, 'w') secret.write(SECRET_KEY) secret.close() except IOError: Exception('Please create a %s file with random characters to generate your secret key!' % SECRET_FILE) # ============================================================================== # third party # ============================================================================== # ..third party app settings here # ============================================================================== # host specific settings # ============================================================================== try: from local_settings import * except ImportError: pass |
Geschrieben am: 14. Dez. 2008 um 19:16 Uhr, Abgelegt in Django & Python
Kommentare zu diesem Artikel (1):
-
Stefan schrieb am 15. Dezember 2008:
Hey, super … Da kann ich bestimmt etwas für meine settings.py übernehmen

Kommentar schreiben