[Python | Django] URL 과 뷰

2025. 1. 19. 20:10·Programming/Python

앱(App)

이전 포스팅에서는 mysite 프로젝트를 생성했었다. 근데 프로젝트 단독으로 아무런 일도 못하기 때문에, 프로젝트에 기능을 추가하기 위해서는 앱을 만들어 줘야 한다. 게시판 기능을 담당해 줄 pybo 앱을 생성해 볼 것이다. 

 

# 명령 프롬포트에서 django-admin의 startapp 명령을 이용해서 pybo앱을 생성해볼 것이다. 

(mysite) 사용자@ MacBookPro mysite % django-admin startapp pybo
(mysite) 사용자@ MacBookPro mysite %

명령을 실행하면 다음줄에 아무런 메시지가 출력 없는 것을 확인할 수 있지만, pybo 앱 관련한 디렉터리와 파일이 생성됨을 에디터에서 확인할 수 있다.


  • mygrations : mygrations는 파일이 아닌 디렉토리이고, 장고가 데이터베이스 테이블을 생성하고 수정하기 위한 파일을 여기서 관리한다. 
  • admin.py : 장고의 관리자 화면을 구성하는 파일이다. 이 파일에 코드를 추가하면 장고 관리자 화면을 제어할 수 있다.
  • app.py : 앱의 구성 정보를 정의하는 파일이다.
  • models.py : 데이터베이스 모델을 정의하는 파일이다.
  • test.py : 앱을 테스트할 때 사용하는 파일이다. 
  • views.py : 앱의 기능을 구현하는 파일이다. (앞으로 가장 많이 사용할 파일이다.)

이제 장고 프로그램을 만들어볼 것이다. 브라우저에 http://127.0.0.1:8000/pybo 페이지를 요청했을 때 "안녕하세요 오신 것을 환영합니다. "라는 문자열을 출력해보자 

 

1. 로컬 서버 구동

(mysite) sindong-ugwanlija@sindong-uui-MacBookPro mysite % python manage.py runserver

위 그림처럼 page not found 오류가 발생했다. 404는 http 오류이다. 주로 브라우저가 요청한 페이지를 찾을 수 없는 경우에 발생한다. 여기서 장고의 단점은 실행 중 오류가 발생하면 화면에 원인을 자세하게 표시해주기 때문에 파악이 쉽다고 한다. 위 사진에서 오류 내용을 보면 config.urls에 pybo/URL에 대한 매핑이 없다는 것이다. config.urls 모듈은 config/urls.py 파일을 의미한다. 이 오류를 해결하기 위해서는 config/urls.py 파일에 pybo/URL에 대한 매핑을 해주면 될 것 같다.

urls.py 파일은 페이지 요청이 발생하면 가장 먼저 호출되는 파일로 URL 과 뷰 함수를 연결하는 역할을 한다.


urls.py

URL 매핑을 추가하기 위해 config/urls.py 파일을 위 사진 처럼 수정해줘야한다. pybo/ URL이 요청되면 views.index를 호출하라는 매핑을 urlpattens에 추가했다. views.index는 views.py 파일의 index 함수를 의미한다.

urlpatterns & path
urlpatterns : 장고에서 URL과 뷰 함수 간의 매핑을 설정하는 데 사용되는 중요한 변수.
path() : 이 함수는 URL과 뷰를 매핑하는 장고의 함수이다. 

urlpatterns에서 실제 URL은 http://127.0.0.1:8000/pybo 이지만 호스트명과 포트가 생략된 pybo/로 매핑 해줘야한다. 이유는 호스트(127.0.0.1)명과 포트(8000)은 서버가 어떤 환경에서 실행되는지에 따라 변하기 때문이다. 참고로 URL 매핑 시 항상 끝에 슬래시를 붙이는 것이 좋다.


페이지를 다시 요청했을 때 사이트에 연결할 수 없다고 오류화면 표시를 확인할 수 있었다. 오류의 원인은 URL 매핑에 추가한 뷰 함수 views.index가 없기 때문이다. 그러면 이제 pybo/views.py 파일에 index 함수를 추가해줘야한다.

 

HttpResponse는 요청에 대한 응답을 할 때 사용한다. 문자열을 브라우저에 출력하기 위해 사용된다. index 함수의 매개변수 request는 HTTP 요청 객체이다. 다음 포스팅에서는 request 객체에 대해서는 뒤에서 자세히 알아보자.


결과

 

저작자표시 비영리 변경금지 (새창열림)

'Programming > Python' 카테고리의 다른 글

[Python | Django] 장고 개발 흐름 정리하기 - 1  (0) 2025.01.20
[Python | Django] 장고 프로젝트 생성하기  (0) 2025.01.15
[Python / Django] 파이썬 가상 환경 구성  (0) 2025.01.15
[Python] Python 기반 웹 페이지 mariaDB로 생성한 데이터베이스 연동  (0) 2025.01.15
[Python] 람다 함수  (0) 2024.12.29
'Programming/Python' 카테고리의 다른 글
  • [Python | Django] 장고 개발 흐름 정리하기 - 1
  • [Python | Django] 장고 프로젝트 생성하기
  • [Python / Django] 파이썬 가상 환경 구성
  • [Python] Python 기반 웹 페이지 mariaDB로 생성한 데이터베이스 연동
Kouji
Kouji
Journey to Becoming a Data & Server Engineer
  • Kouji
    Kouji's Data & Server Journey
    Kouji
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Programming
        • Python
        • SQL
      • Data & AI
        • Data Analysis
        • Ai
      • Cloud(AWS)
      • OS
        • Linux
        • Docker
        • Jenkins
        • Ubuntu
        • Window
        • Kubernates
        • Ansible
      • Network
        • NVIDIA
        • Network[이론]
        • Network[GNS3, Packet]
        • Network[On-Premise]
        • Network [L2, L3]
      • 트러블 슈팅
      • Life
        • My Career Stories
        • Personal
      • 개발 + OS 지식 함양
  • 블로그 메뉴

    • 홈
    • 관리 페이지
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    IT
    클라우드엔지니어
    ubuntu
    알고리즘
    네트워크
    네트워크엔지니어
    보안
    인프라엔지니어
    서버
    라우팅
    AWS
    화이팅
    서버엔지니어
    Linux
    CISCO
    L3
    오블완
    docker
    OS
    티스토리챌린지
    dns
    시스템엔지니어
    VMware
    리눅스
    인프라
    네트워크엔지니어링
    네트워크관리사
    웹
    스위치
    도커
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kouji
[Python | Django] URL 과 뷰
상단으로

티스토리툴바