Django 뜯어보기(3)
manage.py의 기능 - 3. DB 초기화 및 변경사항 반영
python manage.py migrate
migrate라는 명령어를 통해서 db.sqlite3라고 있는데
장고에서 기본적으로 제공하는 db인데
이 db를 초기화 해주거나 프로젝트에서 db를 변경할 일이 생길 경우
명령어를 통해서 사용할 수 있다.
manage.py의 기능 - 4. 관리자 계정 생성
python manage.py createsuperuser
관리자의 계정을 만드는 프롬프트가 뜬다.
예를 들어 Username은 admin이라고 입력하고
비밀번호 입력하고 이메일 적는 것도 뜨는데
이메일을 적기 귀찮으면 공란으로 그냥 엔터 쳐도 된다.
관리자 페이지 보기
python manage.py runserver
urls.py에 admin이라고 있다.
현재 주소에 + admin
예를 들어 웹 사이트 주소는 http://127.0.0.1:8000/ 이다.
http://127.0.0.1:8000/admin으로 url에 들어갔을 때 admin.site.urls 를 실행한다.
라고 하는 뜻이다.
주소/admin에 들어가면 admin 사이트로 자동으로 연결된다.
여기서 웹 서비스를 관리자로써 관리할 수 있다.
settings.py
* 외울 필요는 없다.
BASE_DIR : 프로젝트의 기본 위치
(쉽게 말해서 manage.py가 있는 파일 위치를 적어주면 된다.)
이거는 내가 직접 건드릴 일은 없다.
SECRET_KEY : 킬 일이 있을 때 암호를 만들어주는 해시를 생성할 때 만들어주는 문자열
ex) admin 계정을 만들 때 비밀번호를 1234라고 지정을 했다
실제로 db에 저장할 때는 평문으로 1234라고 저장하면 안된다.
패스워드는 암호화를 시켜야 되는데 암호화를 시킬 때 만드는 문자열이라고 보면 된다.
❗ 배포할 때 외부로 절대 노출하면 안된다 ❗
DEBUG = True
이것은 중요한데 어떻게 서버를 킬 것인지를 결정하는 것이다.
개발자모드로 서버를 킬 것인지
실제 사용자들이 직접 상호작용하는 즉, 배포용으로 서버를 킬 것인지
위 코드로 작성 후 실행했다.
있지도 않은 url을 입력하면 (ex. http://127.0.0.1:8000/ㅁㅇ리마너이런ㅁ일) 자세한 정보를 제공한다.
DEBUG = True 를 입력하면 개발자들이 보기 편하게 최대한 많은 정보를 준다.
실제로 웹 서비스를 운영하는데 서버 내부의 정보들을 사용자들에게 노출하게 되면
해킹에 취약할 수 있다.
그렇기 때문에 실제로 개발을 할 때 있어서는 True로 해놓지 말고
False로 해둬야 한다.
DEBUG = False 로 변경 후 오류가 뜨는 경우
settings.py에서
ALLOWED_HOSTS = [ 'localhost', '127.0.0.1' ]
로 변경해준다.
다시 실행하면 오류없이 잘 실행된다.
Q. ALLOWED_HOSTS = 'localhost', '127.0.0.1' 의미는??
A. 두개의 값은 로컬 서버에서 실행 시 ( 'localhost', '127.0.0.1') ,
노란 페이지로 나오는 에러 화면을 보이지 않게 하겠다는 의미로 이해하면 될 것 같다.
INSTALLED_APPS : Application들을 써주면 된다.
pip를 이용해서 다른 패키지들을 설치하거나
manage.py에 있는 앱으로 application을 만들어 주던지 해서 외부 패키지들을 적어주면 된다.
DATABASES : 어떤 데이터베이스를 쓸 것인지 그리고 그 데이터베이스는 어디에 있는지를 써주면 된다.
지금 우리가 쓸 데이터베이스는 db.sqlite3,
sqlite 라고 하는 이름의 default 데이터베이스를 쓰기 때문에
기본적으로 sqlite라고 하는 데이터베이스를 쓴다, 그 위치는 여기있다 라는 식으로
쓰여져 있는 것을 확인할 수 있다.
* sqlite 말고 다른 데이터베이스를 연동하는 것도 추후 설명할 예정이다.
말하자면 settings.py에 있는 데이터베이스는 실제 데이터베이스와 연결해주는
플러그 같은 역할이라고 보면 된다.
Internationalization 국제화
현재 시간을 어떤 시간을 기준으로 장고 웹 서비스를 맞출 것인지
언어를 어떤 식으로 맞출 것인지
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
한국말로 이루어지게 된다.
STATIC_URL
html, css, javascript 처럼
우리들의 웹서비스에서 미리 준비하는 static 파일들이
어디에 위치해있는지 위치를 쓰는 것이다.
즉,
css, javascript, image 처럼우리 웹서비스에서 미리 준비한 정적인 대상,
꾸며주는 것들 이런 것들이 어디에 위치해 있는지 url을 써준다.
다 외울 필요는 없지만 적어도 이게 어떤 역할을 하는지 정도는 기억하는 것이 좋다.
'Django' 카테고리의 다른 글
Hello World 2 (0) | 2021.07.27 |
---|