31👍
Just like the error says, you have no SECRET_KEY
defined. You need to add one to your settings.py.
Django will refuse to start if
SECRET_KEY
is not set.
You can read more about this setting in the docs.
The SECRET_KEY
can be just about anything…but if you want to use Django to generate one, you can do the following from the python shell:
>>> from django.utils.crypto import get_random_string
>>> chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'
>>> SECRET_KEY = get_random_string(50, chars)
>>> print SECRET_KEY
Copy the SECRET_KEY
to your settings file.
7👍
SECRET_KEY
variable in settings.py should be kept secret
You can place the string secret key generated with the get_random_string
function above (as said @rnevius ) in settings.py but use a function that get the variable.
This means, that for security reasons, it is better to hide the content of SECRET_KEY variable.
You can define an environment variable as follow:
In your $HOME/.bashrc
or $HOME/.zshrc
or /etc/bashrc
or /etc/bash.bashrc
according to your unix operating system and terminal manager that you use:
export SECRET_KEY='value_of_the_secret_key_generated_by_get_random_string_function'
you can look something like this:
export SECRET_KEY='lmrffsgfhrilklg-za7#57vi!zr)ps8)2anyona25###dl)s-#s=7=vn_'
And in the settings.py you can add this:
import os
from django.core.exceptions import ImproperlyConfigured
def get_env_variable(var_name):
try:
return os.environ[var_name]
except KeyError:
error_msg = "Set the %s environment variable" % var_name
raise ImproperlyConfigured(error_msg)
SECRET_KEY = get_env_variable('SECRET_KEY')
The function get_env_variable tries to get the variable var_name from the environment, and if it doesn’t find it, it raises an ImproperlyConfigured error. Using it in this way, when you try to run your app and the SECRET_KEY variable is not found, you will be able to see a message indicating why our project fails.
Also you can protect the secret content variables of the project in this way.
- Why is post_save being raised twice during the save of a Django model?
- Using User.objects.get_or_create() gives invalid password format in django?
- How to specify long url patterns using Regex so that they follow PEP8 guidelines
- Celery – minimize memory consumption
- How to paginate "Change List" page in Django admin?