본문 바로가기
Python

앱(App) 생성 및 Urlpatterns 정의

by Mr.DonyStark 2024. 4. 11.

앱(App)이란?

○ 기본적으로 App=Application=program 같은 의미로 생각하면 됨.
프로젝트는 큰 개념이고 앱은 그 하위의 작은개념임.
큰 프로젝트 안에서 필요한 프로그램들의 단위.
즉, 앱은 프로젝트 내에서 특정한 기능을 수행하는 프로그램 단위.
urls.py 는 별도생성해줘야함.(최상위 urlconfig 제외, 최상위 앱은 자동으로 생성됨)

 

□ 프로젝트 및 앱 생성 명령어

#프로젝트 생성 명령어
django-admin startproject 프로젝트명

#앱 생성 명령어
python manage.py startapp 앱명

 

좌측 이미지는 django-admin startproject mypjt 라는 프로젝트를 생성한 것이며, 프로젝트 생성이되면 기본적으로 대표 앱 디렉토리(프로젝트명과 같음)와 manage.py 파일이 생성됨. 우측 이미지는 python manage.py startapp onememos 명령어로 신규 App을 생성한 것임.

 

※ 대표 상위 앱 디렉토리에는 urls.py 파일이 자동으로 생성되지만, 하위 앱으로 생성된 디렉토리에는 urls.py가 자동으로 생성되지 않기에 수동으로 만들어줘야함.

copy con urls.py

 

최상위 urls.py 에 url patterns관련 하위 앱에 대한 path를 추가해줘야함. 기본적으로 최상위 urls.py에는 path("admin/")이 자동으로 등록되어 있음.

 

□ url patterns 지정 : 기능별 도메인 패턴을 정의해줌. 최상위 urls와 하위 urls 연결을 위해 필요함

  ○ 위에서 onememos라는 앱을 생성했고, onememos관련 페이지에 접속하면 "OneMemos!Hello, World!:-)"가 표시되도록 views.py 파일에 코딩진행. 

  ○ 사용자가 해당 앱관련 페이지에 들어오면, 즉, 요청을하면 응답할 수 있도록 from django.http import HttpResponse 라는 라이브러리를 사용.

from django.shortcuts import render
from django.http import HttpResponse #해당 페이지에대한 응답관련 라이브러리 

# Create your views here.
def index(request):  #requests에 주소가 매게변수로 들어감
    #요청에 따른 응답으로 뿌려주겠음
    return HttpResponse("OneMemos!Hello, World!:-)")

 

  ○ 위 작업이 끝났다면, 해당 앱의 url을 정의하기위한 작업이 필요함. 하위 앱인 onememos는 urls.py가 없어 별도 생성하여 아래와 같이 정의하였음.

  ○ onememos 디랙토리안의 views 파일을 임포트하여 views 파일에서 정의한 함수명을 활용해, 아래와 같이 path를 지정.

views.index, name="index"

 

※path(" ") 는 url 기본 주소를 의미하며 아래 코드와 같이 코딩을하면, 이미지와 같이 onememos 앱에 대한 path가 생성된 것을 확인 할 수 있음. 단, 앱에 대한 urls.py가 지정됬다면, 최상위 urls.py에 대한 urlpattern 정의를 해줘야 아래 이미지와 같이 경로가 지정되고 url이 생성됨.

#라이브러리
from django.urls import path
from . import views

urlpatterns = [
    #path(1."", 2.어떤 것, 즉, view 파일에서 정의한 함수, name="대표키워드")
    #"" 웹 주소~~(http://locaalhost:*****/onememos/)와 같은의미, 2는 어떤것(view)
    path("", views.index, name="index"), #view파일에서 지정한 index 함수로 연결
]

 

  ○ 상위 urls.py urlpatterns 지정

   - 아래 코드를 보면 admin과 새로 생성한 app onememos에 대한 urlpattern이 정의 되어 있음.

   - 신규 생성한 app 에 대한 urlpattern 을 정의하려면 include 함수를 사용해야하며, 라이브러리 추가시 별도 지정 후 사용.

   - include("onememos.urls") : onememos 앱의 urls.py를 의미하며, 해당 파일에서 지정한 경로를 상휘 urls.py에서 포함한다는 것을 의미.

     *다른 URL 패스들을 참조할 수 있도록 해주는 함수. 앱 구동 및 연결시 중요한 역할을 하는 함수

from django.contrib import admin
from django.urls import path, include #include 함수사용을 위해 호출

urlpatterns = [
    #하위앱에 대한 url주소와 urls.py (앱명.urls 기재) 경로
    path("onememos/", include("onememos.urls")), #include 임포트 했는지 꼭 확인해야함. 안하면 서버 구동 시 에러.
    path('admin/', admin.site.urls)
]

 

'Python' 카테고리의 다른 글

Views.py : render 함수와 템플릿  (0) 2024.04.15
[Python] 전역변수, 지역변수  (0) 2023.11.01