스터디/Web

[Django] 기본 개념 (앱, 모델, 관리자)

sollllllll 2022. 1. 6. 21:57

참고: https://wikidocs.net/73306

 

 

(1) 앱

장고에서는 기능을 수행하기 위해 '앱'이라는 형식을 사용한다.

프로젝트에 앱을 만드는 명령어는 다음과 같다.

(mysite) C:\(생략)\DjangoProj\mysite>django-admin startapp myapp	#앱 이름: myapp

 

앱이 생성되었으니 필요한 내용과 구현할 기능을 IDE에서 작성하고 개발서버를 구동한 다음

주소 뒤에 '/myapp' 를 붙이면 해당 기능이 구현된 웹 페이지가 띄워진다.

 

해당 페이지가 제대로 작동하려면 '프로젝트/config/urls.py' 에 url 매핑을 추가해야 한다.

(...)
urlpatterns = [
    (...)
    path('myapp', 함수명)
    (...)
]
(...)

다음과 같이 매핑을 추가하면 'http://주소/myapp/' url 이 요청되었을 때 뒤에 연결된 함수를 실행한다.

웹페이지를 보이기 위해서 '프로젝트/앱/views.py' 파일의 index 함수를 호출한다고 가정하자.

이 경우 url 을 실행했을 때 urls.py 파일에서 'myapp/' 과 매핑된 함수 'views/index' 를 찾아 실행하게 된다.

 

이 흐름은 다음 그림을 따른다.

출처: https://wikidocs.net/70649

 

 

 

(2) 모델

웹 페이지를 작성하다보면 DB를 사용하게 되는데 장고에서는 이 기능도 쉽게 제공한다.

일반적으로는 DB 생성을 위한 쿼리를 작성해야 하는데 장고에서는 쿼리 작성을 하지 않아도 된다.

이것은 ORM 덕분인데, ORM은 'Object Relational Mapping' 이라는 뜻으로,

DB의 테이블들을 모델화해서 사용하기 때문에 쿼리를 작성할 필요가 없다.

참고 자료에서는 sqlite3 를 사용한다.

 

먼저 데이터 모델을 만드는데, 모델에 필요한 속성과 데이터타입을 정한다.

그 후에 '프로젝트/myapp/models.py' 파일에 모델을 정의한다.

데이터타입은 다음 페이지를 참고하면 된다.

https://docs.djangoproject.com/en/3.0/ref/models/fields/#field-types

 

Model field reference | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

모델 작성이 끝나면 'config/settings.py' 파일에서 내 앱을 추가하고 migrate 명령을 수행한다.

모델이 변경되었기 때문에 migrate 명령을 바로 실행하는 것이 아닌 makemigrations 명령을 먼저 수행한다.

migrate 명령어를 수행하면 관련 내용이 이동해 내 앱에 적용된다.

(mysite) c:\(...)\DjangoProj\mysite>python manage.py makemigrations

(mysite) c:\(...)\DjangoProj\mysite>python manage.py migrate

 

모델이 적용되고 나면 장고 셸을 통해 모델을 사용할 수 있다.

장고 셸로 진입하는 명령어는 다음과 같다.

(mysite) c:\(...)\DjangoProj\mysite>python manage.py shell
	(...)
>>>

셸에서 미리 작성한 모델의 속성을 고려하며 데이터를 만들 수 있다.

# 예시
>>> (필요한 라이브러리 import)
>>> q = Question(subject='pybo가 무엇인가요?', content='pybo에 대해서 알고 싶습니다.', create_date=timezone.now())
>>> q.save()

데이터 조회와 수정, 삭제는 참고 자료에 자세히 설명되어 있다.

 

 

 

(3) 관리자

웹 페이지를 운영하다보면 관리자의 필요성을 느끼는데,

장고에서는 관리자 기능을 기본으로 제공하기 때문에 사용자, DB 모델 관리 등을 쉽게 할 수 있다.

관리자 페이지에서 제공하는 기능들은 공식 문서에 자세히 소개되어 있다.

https://docs.djangoproject.com/en/3.0/ref/contrib/admin/

 

The Django admin site | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com