ホームページ >バックエンド開発 >Python チュートリアル >.env を使用して Django キーを更新する

.env を使用して Django キーを更新する

Susan Sarandon
Susan Sarandonオリジナル
2024-11-29 05:41:10150ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。