>백엔드 개발 >파이썬 튜토리얼 >.env를 사용하여 Django 키 업데이트

.env를 사용하여 Django 키 업데이트

Susan Sarandon
Susan Sarandon원래의
2024-11-29 05:41:10155검색

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으로 문의하세요.