问题:


I created a new project in django and pasted some files from another project. Whenever I try to run the server, I get the following error message:

Here's my settings.py

Here's manage.py as well

Any help? Thanks!


回答1:


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:

Copy the ​​SECRET_KEY​​ to your settings file.





回答2:


​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:

you can look something like this:

And in the settings.py you can add this:

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.