1. 앱 만들기
1) 생성
터미널창을 띄워 manage.py 파일이 존재하는 곳에서 아래 명령어를 입력하여 앱을 만든다
- python manage.py startapp "경로/앱이름"
2) 앱등록
settings.py 편집
- INSTALLED_APPS 섹션에 '앱이름.apps.앱Config' 추가
2. View 만들기
1. view 코드 작성
1) 앱 하위에 존재하는 views.py를 편집한다
2) from django.http import HttpResponse 코드를 삽입
3) index함수를 아래그림과 같이 작성한다
2. url 매핑
1. 앱 url 매핑
1) polls 앱하위에 urls.py 라는 이름으로 파일을 만든다
2) 그후 아래와 같이 코딩한다
2. 루트 url 매핑
1) 최상단에 존재하는 urls.py 를 편집한다
2) include 모듈을 임포트 한다
3) path('polls/', include('polls.urls')), 코드를 추가한다
=> url에 127.0.0.1:8000/polls로 접속시 , polls앱의 urls를 참조하도록 한다
3. 서버 시작및 확인
1. 터미널에서 python manage.py runserver 명령어를 통해 서버 실행
2. 127.0.0.1:8000/polls 로 접속하여 확인
3. Model 만들기
*장고에서 Model에 대한 id는 migrate후 자동으로 생성해준다
- 모델명.id로 이용이 가능하다
- 또한 Class와 Table을 1:1 매핑하는 ORM을 사용한다
- 각 Model(Class)에는 'id'라는 필드가 자동으로 생성되므로 'id'라는 이름의 필드는 사용이 불가능하다
1. models.py를 편집하여 model 편집
1) Question , Choice 테이블 생성
2) 마이그레이션 파일 만들기
- python manage.py makemigrations "앱이름"
*마이그레이션 파일
- 모델의 변경 내용이 디스크 상에 저장되는 단순한 파일이며
아직 데이터베이스의 스키마가 생성되기 이전에 생성되는 파일이다.
2. 모델의 변경으로 실행될 SQL 명령어 확인
- python manage.py sqlmigrate polls 0001
=> 실제명령어를 실행하지는 않고 데이터베이스에서 실행될 SQL명령어를 보여준다
( 트랜잭션형태로 만들어지는 것을 볼 수 있다)
3. 마이그레이션 파일을 이용하여 데이터베이스에 모델에 대응하는 테이블을 생성
- python manage.py migrate
4. 다른 Views 추가
1. views.py를 편집한다
1) 하나의 웹페이지를 나타낼 함수를 추가한다
2) 인자로 넘어온 question_id 에따라 화면에 표시되는 글이 다르게 나타날것이다
ex) 127.0.0.1:8000/polls/1 => You're looking at question 1.
127.0.0.1:8000/polls/8 => You're looking at question 8.
2. 위에서 만든 view를 표시할 url을 추가한다
- url(r'^(?P<question_id>[0-9])+/$', views.detail, name='detail')
* url함수를 추가하면서 상단에 주석으로 어떤식으로 요청되는지 적어주면 나중에 가독성이 향상된다
* polls/하위의 url이므로 프로젝트 하위에 존재하는 urls.py를 편집할 필요는 없다 polls/ 로 시작하는 url이라면 일단 polls가
담당하는 urls.py로 전달되기 때문이다.
3. 확인
*url에서 받는 수를 [0-9]로 지정했기 때문에 9를 초과하는 수가 url로 요청되면 그수가 나타나지 않는다.
(일의 자리수만 받아온다)
'FrameWork > Django' 카테고리의 다른 글
Django - Template(템플릿) 사용 (0) | 2018.12.08 |
---|---|
Django - 장고 어드민 사이트 이용하기 (0) | 2018.12.08 |
Python - 장고 명령어 (0) | 2018.12.01 |
Python - 장고 Project 와 Apps (0) | 2018.12.01 |
Python - Window 장고 프레임워크 환경 구축 , Mysql 연동 (0) | 2018.12.01 |