首頁 >後端開發 >Python教學 >使用 .env 更新 Django 金鑰

使用 .env 更新 Django 金鑰

Susan Sarandon
Susan Sarandon原創
2024-11-29 05:41:10216瀏覽

Update Django Key using .env

我通常寫的 Laravel 有一個指令可以更新 .env 檔案中的加密金鑰。老實說,我喜歡這種方法,並且想在我的 django 專案上複製。

因此,我按照以下步驟操作:

第 1 步:載入 .env 文件

請參閱:https://dev.to/pcmagas/how-to-load-env-in-django-project-4c9d

步驟 2:使用 SECRET_KEY 環境檔案:

在 settings.py 執行:

SECRET_KEY = os.getenv('SECRET_KEY',None)

if SECRET_KEY is None:
    raise RuntimeError("SECRET_KEY value is not defined upon .env file")

步驟 3 建立更新 .env 的命令:

我使用以下內容製作了腳本 myapp/management/commands/mk_key.py(將 myapp 替換為您自己的應用程式名稱):

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")

然後運行它:

 python manage.py mk_key

以上是使用 .env 更新 Django 金鑰的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn