Django 앱 시작하기(1). - URL

HOKlNG·2021년 7월 21일
0

Django

목록 보기
3/5

지난 시간에 DB 연결을 하였다.
바로 사용하지는 않지만 일단 세팅만 먼저 해놓았고
이번 시간에는 django에서 내가 만든 페이지를 출력해보고자 한다.

지난 django를 실행했을때 해당 페이지가 뜨는 것을 알 수 있었다.
그럼 끝인가?... 아니다. 본인의 페이지를 구성하기 위해서 django를 시작한 것이다.
app_main폴더에서 그 시작을 할 것이다.

먼저 시작전에 app을 생성한 뒤에는 해야할 일이 있다.

1.settings에 app 추가하기

지난 시간에 django-admin startapp [앱명] 으로 앱을 만들었다.
그때 만든 app의 이름이 app_main이다. 해당 내용을 settings에 만들어서 사용할 것이라고 알려줘야한다.
*settings.py는 프로젝트 폴더에 있다.

거기서 INSTALL_APPS라는 부분을 아서 내가 만든 APP을 추가한다.

2. URL작업

일단 app_main폴더에 urls.py를 생성해줍니다.

처음에는 url작업들이 헷갈릴 수 있습니다.

프로젝트 폴더에도 urls.py가 있고, app폴더에도 urls.py들이 있습니다.
처음에는 프로젝트와 앱에 대한 차이도 헷갈릴텐데 폴더주제에 urls.py라는 것들이 왜 또 있지 라는 의문이 듭니다.

프로젝트를 하다보면 수 많은 엔드포인트들이 생깁니다.
즉, url이 늘어난다는 것인데 도메인이 www.hoklng.com이라고 가정하면
계정과 관련된 것들은
www.hoklng.com/accounts/delete
www.hoklng.com/accounts/change-profile
메인페이지와 관련된 것들은
www.hoklng.com/main/alarm
www.hoklng.com/main/messge

다음처럼 url들을 만들텐데 보이시나요?
계정과 관련된 것들은 도메인+/accounts/~
메인페이지와 관련된 것들은 도메인+/main/~ 이런식으로 된다는 것을??

즉 다시 말해서 도메인 다음을 일종의 app들의 엔드포인트라고 보시고
프로젝트[config]에 있는 urls.py에서 앱마다 큰 주소를 배분해주고 나머지 이후의 주소는
각 앱[app_main]에서 기능별로 할당을 하게 만드는 것입니다. 위에 그림처럼요!
accounts는 아직 앱을 생성하지 않았지만 이해를 위해서 둔 것들입니다.

당장 이해가 되지 않는다고 해도 차차 이해하실 수 있을 것입니다.

프로젝트 urls.py

일단 위에서 앱 폴더에 urls.py를 생성하셨으면
프로젝트 urls.py [config.urls.py]에서 다음 과 같이 변경해주세요

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('main/', include('app_main.urls')),
]

라이브러리에서 include기능을 불러온 것과
path('main/~) 부분이 추가 되었습니다.
자세히 보시면 include('앱이름.url파일')인 것을 확인할 수 있습니다.

앞으로 도메인+main/이 포함된 내용은 app_main에서 작성되는 것들일 겁니다!

앱 urls.py

프로젝트에서 엔드포인트를 제공했으면 해당하는 기능을 만들어 볼까요?
앱의 urls.py를 열어서 다음과 같은 내용을 추가합니다.

from django.contrib import admin
from django.urls import path, include, re_path
from .views import index

urlpatterns = [
    path('', index, name='main'),

]

이후 같은 앱 폴더에 있는 views.py에 아래 내용으로 전체 변경합니다.

from django.shortcuts import render, redirect, HttpResponse

# Create your views here.
def index(request):
   return HttpResponse('처음으로 연결한 app')

이후 인터넷 브라우저에 로컬서버 + main을 붙여봅니다.

다음과 같이 나오면 성공입니다.

해당 내용의 설명은 다음 게시물에서 view를 설명하면서 하도록 하겠습니다!

0개의 댓글