내가 왜 장고를 쓰는가
내가 장고를 쓰게 된 이유는 명확하다. 업무 중에 장고를 쓴다.
그런데 장고 전체 기능을 쓰는 것은 절대 아니고, 장고의 어드민 기능만 사용한다.
이유인 즉, 데이터 자체에 접근하여 수정을 하는 업무가 필요한데, 이 업무를 담당하는 사람이 개발자가 아니다. 그리고 만약 개발자라고 하더라도, 이러한 데이터 수정이 잦아지면 그때마다 쿼리를 친다든지 하는 식은 너무 비효율적일 것이다.
그렇기 때문에 어드민 페이지 기능을 도입하여 데이터에 대한 검색, 요약, 수정 및 제거 등을 해야 하고, 장고가 그런 부분에 있어서 많은 부분을 자동화해준다. Low-Code 플랫폼을 사용할 것을 장고로 수행하고 있다고 보아도 무방하다.
많은 부분에서 Mendix Studio가 생각난다. Low-code 플랫폼을 사용하면서 느꼈던 것이지만, 관리자 페이지를 만드는 것 이외에 서비스까지 가기엔 정말 별로다. 하지만 어쨌든 관리자 페이지 하나는 기깔나게 만들어주는 느낌이다. 어드민 페이지만을 위해 장고를 쓸 바엔 로우코드 플랫폼도 좋아보이지만, 이건 대부분 비싸니까...
목표
그렇기에 목표는 단순하다. 어드민 페이지의 구현과 일부 기능 사용이다.
Tutorial을 따라가면서 어드민과 관련된 Tutorial 내용을 정리하는 것을 목표로 한다.
Tutorial 1
Tutorial 1.
Start Project 통해 기본 형태 만들어짐. 다만 이 부분은 IntelliJ Idea 도움 받음.
djangotutorial/
manage.py
djangotutorial/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
최외곽 경로명은 변경 가능.
- manage.py: 설정값 저장, 어드민 기능 실행 등 가능. DJANGO_SETTINGS_MODULE=mysite.setting 과 같은 환경변수 / 환경설정 위치 등을 지정해줄 수도 있다. 상세 설명
- settings.py: 설정값 저장
- urls.py: URL 선언. controller인가?
- asgi.py: ASGI 웹 서버 접근
- wsgi.py: WSGI 웹 서버 접근
cf. python manage.py runserver 로 단순히 개발서버 실행 가능. listening port 등도 지정 가능.
IntelliJ에서 manage.py 명령어를 직접 실행할 수 있다.
Tools > Run manage.py tasks(혹은 액션 바로가기) 통해서 runserver 등을 실행할 수 있으며, 자동완성 지원도 가능하니 더 편하다.
이를 통해 startapp polls 로 투표 앱 생성.
프로젝트 vs 앱: 전체 웹사이트를 구성하는 설정, 앱의 총칭 vs 특정 기능을 수행하는 웹 앱
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
urls.py
views.py
views.py : 컨트롤러 역할. 어떤 response를 반환할 지 지정.
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("Hello world. This is the polls index.")
urls.py : URL 매핑의 역할. 컨트롤러의 기능을 일부 갖고 있는 듯. urlpatterns 내에 경로, 함수, 이름 지정.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
urls.py의 경우 디렉토리/앱 별로 설정 가능하며 상위 url과 하위 url의 조합도 당연히 가능해진다.
이 때 django.urls.import()를 사용해야 한다.
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('polls/', include('polls.urls'))
]
polls.urls 모듈 내의 url 을 자연스레 ‘polls/’에 연결하며, include는 이 연결을 보조
path(): route, view(view function 자체를 호출), name(URL 네이밍), kwargs(Model과 같이 몇몇 args를 전달할 수 있는듯)
'개발 여행 > Django' 카테고리의 다른 글
[Django Admin] 3. Form, Generic View (0) | 2023.04.09 |
---|---|
[Django Admin] 2. 모델, 렌더링 (0) | 2023.02.19 |