Django 어플리케이션 시작
13858 단어 djangopythontutorialproductivity
여기서 우리는 백엔드 응용 프로그램이나 SSR(Django 템플릿을 사용하는 경우)을 개발하는 데 있어서 가장 좋은 실천을 연구할 것이다.이 과정을 통해 우리는 왜 프로젝트를 만들 때 전체적인 개발 과정의 완성을 기다리지 않고 생산적인 응용 프로그램이 있는지 논술했다.
왜 지금이야?
우선, 좋은 제품은 영원히 진정으로 완성되지 않을 것이다.항상 사용자 인터페이스의 변화, 오류나 논리적 차이, 또는 더 좋은 것은 사용자 피드백 알림 기능의 증가 - 우리의 응용 프로그램은 반드시 견인력을 받아야 한다.이런 측면에서 볼 때, 우리는 모든 사용자의 피드백을 받은 후에 응용 프로그램을 최적화하여 생산할 수 있습니까?우리는 어떻게 미디어 파일을 제공합니까?우리는 계속 직접 서비스를 제공할 수 있습니까?우리는 데이터베이스의 암호를 하드코딩할 수 있습니까?로컬 설정에 기능을 추가하거나 UI를 조정하면 어떻게 됩니까?운영 애플리케이션을 즉시 중단합니까?
우리가 지적하고자 하는 것은 프로그램을 시작하고 실행 과정에서 작은 증량 변경을 하는 것이다."타다아"없어요!그것은 효과가 있어 영원히 깨지거나 바뀌지 않을 것이다잠깐만요.만약 당신이 단순히 인코딩만 한다면, 마치 그것이 당신의 기계 위에 있는 것처럼, 완벽한 기회를 기다리고 있는 것처럼, 당신은 멈춰야 한다.그만해.프로젝트가 시작되자마자 프로그램과 파이프를 시작합니다.'헬로월드'제작 준비.
그만해.우리로 하여금 합작할 수 있는 것이 좀 있게 하다.우리는 가상 환경을 만들고 의존항을 설치했으며 샘플 프로젝트를 설치했다.
GreenCodes ➤ mkdir launch-ready
GreenCodes ➤ cd launch-ready
launch-ready ➤ python -m venv .venv
launch-ready ➤ source .venv/bin/activate
(.venv) launch-ready ➤
launch-ready
라는 디렉터리를 만들었습니다. 이것은 우리가 예상한 프로그램 이름입니다.우리는 또한 가상 환경을 창설하고 활성화시켰다.Django 설치를 계속하고 런타임 시 프로젝트를 작성합니다.pip install django
django-admin startproject LaunchReady .
이제 카탈로그는 다음과 같습니다.(.venv) launch-ready ➤ ls
LaunchReady manage.py
(.venv) launch-ready ➤ ls LaunchReady
asgi.py __init__.py settings.py urls.py wsgi.py
(.venv) launch-ready ➤
실행python manage.py runserver
은 Django의 기본 시작 페이지를 제공합니다.프로그램이 시작되고 실행되었습니다.그러나 생산을 준비하기 위해서 우리는 약간의 물건을 배치해야 한다.
생산과 개발 환경을 만들다.
LaunchReady
디렉토리에 설정 파일이 있습니다.이 디렉터리에 settings
라는 다른 디렉터리를 만들고 설정 파일을 옮겼습니다. 이 과정에서 base.py
로 이름을 바꿉니다.mkdir settings
mv -i settings.py settings/base.py
settings
디렉토리에 다른 두 개의 파일을 생성하여 이름dev.py
-개발 설정-및 prod.py
-프로덕션 설정이 있는 파일로 지정합니다.최종 카탈로그는 다음과 같습니다.(.venv) settings ➤ ls
base.py dev.py prod.py
로컬에서, 우리의 개발 기기에서, 우리는 로컬에 MySQL을 설치하는 것을 선택할 것이다.데이터베이스와 사용자를 계속 만들고 다음 단계로 돌아갑니다.버전 제어의 최선의 실천과 마찬가지로 코드에 암호를 저장하지 마십시오.언제든지 환경 변수를 선택합니다.이 점을 관리하기 위해서, 우리는
.env
파일을 만들었는데, 이것은 영원히 우리의 로컬 기계를 통과하지 못할 것이다.확인을 위해 .gitignore
파일에 추가합니다.echo .env >> .gitignore
그리고 우리는 python-dotenv
(.evn 파일에서 변수를 읽는 것) 과 mysqlclient
(Django와 MySQL이 상호작용하는 패키지) 를 계속 설치합니다.pip install python-dotenv mysqlclient
우리의 개발 설정은 아래와 같다.데이브 가죽
from dotenv import load_dotenv
from LaunchReady.settings.base import *
load_dotenv()
# since it's running on my machine, show me the errors
DEBUG = True
SECRET_KEY = os.getenv("SECRET_KEY")
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": os.getenv("DATABASE_NAME"),
"USER": os.getenv("DATABASE_USER"),
"PASSWORD": os.getenv("DATABASE_PASSWORD"),
"HOST": os.getenv("DATABASE_HOST")
}
}
# show mail messages on the terminal
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
# run on every host.
ALLOWED_HOSTS = ["*"]
따라서 우리는 개발 설정에서 환경 변수를 읽지만 어디서 이런 프로젝트를 설정합니까?간단하다.env
설정 옆에 dev
파일을 만듭니다.(.venv) settings ➤ ls -a
base.py dev.py prod.py .env
파일 내용?SECRET_KEY = 'django-generated-secret-key'
DATABASE_NAME=database_name
DATABASE_USER=database_user
DATABASE_PASSWORD=database_password
DATABASE_HOST=localhost
Note: We can have multiple ways with the database and secret key configuration. It is not linear.
우리의 생산 응용 프로그램에 대해 우리는 Heroku를 예로 들 수 있다.이것은 우리가 얻을 수 있는 모든 다른 서버의 작업 원리와 같다. 단지 한두 개의 조정만 있으면 된다.
데이터베이스가 독립된 플랫폼이나 메인 응용 프로그램과 다른 플랫폼에 있을 때 데이터베이스를 읽고 실행할 수 있는python 패키지
dj-database-url
를 설치했습니다.pip install dj-database-url
프로덕션 준비 설정에서는 다음과 같이 사용됩니다.prod.py
import dj_database_url
from LaunchReady.settings.base import *
ADMINS = (("Developer name", "Developer email"),)
# always set this to false in production
DEBUG = False
SECRET_KEY = os.environ["SECRET_KEY"]
ALLOWED_HOSTS = ["launch-ready-domain.com", "server-ip-address"]
DATABASES = {}
DATABASES["default"] = dj_database_url.config(conn_max_age=600, ssl_require=True)
# ToDo: get an email host provider
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.gmail.com"
EMAIL_HOST_USER = os.environ["EMAIL_HOST_USER"]
EMAIL_HOST_PASSWORD = os.environ["EMAIL_PASSWORD"]
EMAIL_PORT = 587
EMAIL_USE_TLS = True
저희 DEBUG
가 False
로 설정되어 있기 때문에, not found 오류를 얻고 싶지 않고, 메일로 알림을 받고 싶습니다.우리의 보기가 이상을 되돌릴 때 특히 그렇다.이런 상황에서 우리는 개발자에게 책임을 지도록 한다.ADMINS = (("Developer name", "Developer email"),)
Linux 서버를 시작했기 때문입니다.bash 프로필에서 읽을 수 있는 지속적인 환경 변수를 만듭니다. /etc/environment
(시스템 범위의 환경 프로필에 사용) 또는 ~/.bashrc
에서 여러 사용자 프로필을 설정할 수 있습니다.**/etc/environment**
SECRET_KEY=''
DATABASE_URL=''
# this is common with heroku and can be set via the console or dashboard interface
DJANGO_SETTINGS_MODULE=''
EMAIL_HOST_USER=''
EMAIL_PASSWORD=''
이전의 개발 설정과 유일한 주요 차이점은 데이터베이스 설정을 어떻게 읽는가이다.DATABASES = {}
DATABASES["default"] = dj_database_url.config(conn_max_age=600, ssl_require=True)
이것이 바로 우리가 응용 프로그램을 응용 프로그램 서버 위치에서 외부 데이터베이스를 읽는 방식으로 설정하는 방식이다.이번 달리기를 해 봅시다.셸으로 이동하여 개발 서버를 실행합니다.기억해라, 우리는 설정을 끼워 넣고 나누었다.그래서 개발 과정에서 어떤 것을 실행하려면 Django에게 우리가 어떤 설정을 사용해야 하는지 알려야 한다.
python manage.py runserver --settings=LaunchReady.settings.dev
우리 프로그램의 기본 템플릿은 백업입니다.
생산에 대해 우리는 다음과 같은 방식으로 운행할 것이다.
python manage.py runserver 0.0.0.0:8000 --settings=LaunchReady.settings.prod
브라우저를 시작하고 http://launch-ready-domain.com:8000
로 이동합니다.개발 환경과 똑같은 페이지를 가져야 합니다.다음은요?
물론 배포 서버 설정과 설정에 더 많은 내용이 있는데 특히 정적 파일을 제공하는 데 더 많다.하지만 다음 시간까지 머물 수 있다.우리는 이 상당히 긴 문장으로 이해를 깊이 있게 하고, 다음 문장에서, 예, 코드는 즉시 TheGreenCodes 저장소에서 접근할 수 있습니다.
다음까지
TheGreenCodes
Reference
이 문제에 관하여(Django 어플리케이션 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/marvinkweyu/launching-django-applications-53ji텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)