진짜 개발자
본문 바로가기

FrameWork/Django

Django - 장고 앱 생성, 뷰 생성, 모델 생성

728x90

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/=> 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로 요청되면 그수가 나타나지 않는다.

(일의 자리수만 받아온다)