Laravel, das ich normalerweise codiere, verfügt über einen Befehl, der den Verschlüsselungsschlüssel in der .env-Datei aktualisiert. Um ehrlich zu sein, liebe ich diesen Ansatz und wollte ihn bei meinem Django-Projekt wiederholen.
Deshalb habe ich diese Schritte befolgt:
Siehe: https://dev.to/pcmagas/how-to-load-env-in-django-project-4c9d
Unter „settings.py“ Folgendes tun:
SECRET_KEY = os.getenv('SECRET_KEY',None) if SECRET_KEY is None: raise RuntimeError("SECRET_KEY value is not defined upon .env file")
Ich habe das Skript myapp/management/commands/mk_key.py mit Folgendem erstellt (ersetzen Sie myapp durch Ihren eigenen Anwendungsnamen):
from django.core.management.base import BaseCommand from django.core.management.utils import get_random_secret_key import os class Command(BaseCommand): help = 'Create a new Secret Key' def handle(self, *args, **kwargs): key = get_random_secret_key() env_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..',"..","..",'.env') self.updateDotenv(env_file_path,key) def updateDotenv(self,env_file_path,key): with open(env_file_path, 'r') as file: lines = file.readlines() # Update the SECRET_KEY line updated_lines = [] for line in lines: if line.startswith('SECRET_KEY'): continue else: updated_lines.append(line) line = f"SECRET_KEY='{key}'\n" updated_lines.insert(0,line) # Replace with new key # Write the updated lines back to the .env file with open(env_file_path, 'w') as file: file.writelines(updated_lines) # Output the new secret key self.stdout.write(f"Updated .env\n")
Dann führen Sie es aus als:
python manage.py mk_key
Das obige ist der detaillierte Inhalt vonAktualisieren Sie den Django-Schlüssel mit .env. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!