반응형

Django 앱 구조와 URL·뷰·템플릿 완전 정복

“Django에서 프로젝트랑 앱은 도대체 뭐가 다르죠?”
처음 Django를 배우는 분들이 가장 많이 묻는 질문 중 하나예요.
사실 이 부분만 확실히 잡아도 개발이 훨씬 쉬워져요.

 

 

안녕하세요, 여러분!

오늘은 Django 웹 개발에서 가장 중요한 구조적인 개념들을 하나하나 짚어보는 시간을 가져보려고 해요.

특히 초보자 분들이 헷갈려하기 쉬운 "프로젝트 vs 앱", URL과 뷰 연결 방식, 템플릿 활용법, 정적 파일 처리 방법까지!

MVT 아키텍처의 흐름을 시각적으로, 예제를 통해 명확하게 설명드릴게요.

이 포스팅을 마치고 나면 여러분은 Django의 기본 골격을 스스로 이해하고 구성할 수 있을 거예요.

 

1. 프로젝트 vs 앱: Django의 구조 이해하기 🏗️

Django를 시작하면 가장 먼저 접하게 되는 용어가 바로 프로젝트(project)앱(app)이에요.

이 두 개념을 명확히 구분하는 것이 굉장히 중요해요.

왜냐하면 우리가 만드는 서비스가 커질수록 구조를 제대로 이해하지 않으면 코드가 뒤엉켜버리기 때문이죠.

📌 프로젝트(Project)란?

프로젝트는 Django에서 웹 애플리케이션 전체를 포함하는 최상위 공간이에요.

예를 들어, 여러분이 ‘블로그 사이트’를 만든다고 하면, 그 전체 웹사이트가 하나의 프로젝트가 되는 거예요.

settings.py, urls.py, wsgi.py, asgi.py 같은 핵심 설정 파일들이 이 프로젝트 안에 포함되어 있죠.

📦 앱(App)이란?

앱은 프로젝트 내부에 포함되어 하나의 독립적인 기능 단위를 담당하는 컴포넌트입니다.

예를 들어

게시판 기능은 하나의 앱으로, 사용자 인증 기능은 또 다른 앱으로 구성할 수 있어요.

이처럼 앱은 재사용성과 모듈화를 위해 만들어지는 거죠.

📁 기본 폴더 구조 예시

myproject/
├── manage.py
├── myproject/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── asgi.py
│   └── wsgi.py
└── blog/         ← 앱
    ├── admin.py
    ├── apps.py
    ├── models.py
    ├── views.py
    ├── urls.py
    └── templates/

✅ 비교 정리

구분 프로젝트(Project) 앱(App)
의미 전체 웹사이트의 틀 기능별 모듈
역할 설정 및 라우팅 총괄 뷰, 모델, 템플릿 포함
재사용성 낮음 높음

🎯 요약 포인트

  • 프로젝트는 설정의 중심, 앱은 기능의 중심!
  • 하나의 프로젝트에 여러 개의 앱을 넣는 구조가 Django의 핵심.

 

 

2. MVT 아키텍처 요청-응답 흐름 🔁

Django는 MVT 아키텍처라는 구조를 기반으로 동작합니다.

여기서 MVT는 Model - View - Template의 약자예요.

많은 사람들이 헷갈리는 부분이 바로 'View'인데요.

다른 프레임워크에서의 View와는 조금 다른 개념이랍니다.

🔄 MVT의 구성요소

  • Model
  • : 데이터베이스와 연동되는 계층으로, 데이터 구조와 저장 로직을 담당해요.
  • View
  • : URL 요청을 받아 처리하고, 어떤 데이터를 보여줄지 결정하는 비즈니스 로직 처리 담당이에요.
  • Template
  • : 사용자에게 보여지는 HTML 화면을 담당하는 프론트엔드 계층입니다.

📡 요청-응답 흐름

MVT 구조는 사용자의 요청이 서버에 도달했을 때 어떤 방식으로 응답이 이루어지는지를 순서대로 처리해요.

아래는 그 흐름을 간단히 도식화한 거예요.

1. 사용자가 웹 브라우저에서 특정 URL 요청
2. Django가 URLconf에서 해당 URL 패턴 탐색
3. 매칭되는 View 함수 호출
4. View 함수가 Model을 통해 데이터 처리
5. View가 Template에 데이터 전달
6. Template이 HTML 생성하여 사용자에게 응답 반환

🌐 예시 흐름: 블로그 글 목록 보기

사용자가 /posts/ 주소로 접속하면 Django는 urls.py에서 이 URL과 매칭되는 View 함수를 찾습니다.

그 View는 Post 모델에서 데이터를 조회하고, 이를 템플릿(post_list.html)에 전달하여 HTML 페이지를 렌더링한 후 응답으로 전송해요.

🔁 한 문장 요약

URL → View → Model → Template → 사용자 응답 이 흐름을 이해하는 것이 Django 개발의 핵심이에요!

 

 

3. URLconf와 View 함수 연결 방법 🔗

Django에서 사용자가 어떤 페이지를 요청하면,

그 요청은 URLconf(URL configuration)라는 설정 파일을 통해 해당 View 함수와 연결됩니다.

이 과정을 이해하면, 웹사이트의 구조를 자유자재로 설계할 수 있어요!

📁 urls.py의 역할

urls.py는 URL 패턴을 정의하는 파일이에요.

이 파일을 통해 "이 URL 요청이 들어오면, 어떤 View 함수로 전달할지"를 결정하죠.

마치 웹사이트의 길 안내를 해주는 네비게이션 같은 존재예요.

📨 View 함수는 무슨 역할을 하나요?

View 함수는 요청을 받아 필요한 데이터를 조회하거나 가공한 후, 적절한 응답(HTML, JSON 등)을 만들어 반환합니다.

비즈니스 로직의 중심이며, 종종 모델과 템플릿 사이의 가교 역할도 해요.

🔧 간단한 연결 예제

# app/views.py
from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello, Django!")

# app/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]

위 코드에서 사용자가 / 경로로 접속하면 home 함수가 실행되고, 그 결과로 "Hello, Django!"가 출력되는 구조예요.

🔁 프로젝트 전역 URLconf 연동

앱 단위로 작성된 urls.py는 프로젝트의 메인 urls.py에서 include()를 통해 불러와야 작동합니다.

예를 들어:

# project/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('app.urls')),  # 앱의 URLconf 포함
]

📚 URL, View 연결 요약

  • View는 함수를 통해 사용자 요청을 처리하고 응답을 만들어냅니다.
  • urls.py는 "이 요청은 이 View로!" 라는 연결고리 역할을 합니다.
  • 프로젝트와 앱의 urls.py를 함께 구성해야 Django가 전체 요청을 인식해요.

 

 

4. 템플릿 엔진 사용 방법과 정적 파일(Static files) 처리 개념 🧩

Django의 매력 중 하나는 강력한 템플릿 엔진과 정적 파일 시스템이에요.

이 두 가지를 잘 활용하면, 백엔드 개발자가 프론트엔드 영역까지 손쉽게 다룰 수 있어요.

HTML 코드에 Python 데이터도 넣을 수 있고, CSS, JS, 이미지도 깔끔하게 관리할 수 있죠.

🧠 템플릿 엔진이란?

Django의 템플릿 엔진은 HTML 문서 안에 Python 데이터와 로직을 삽입할 수 있도록 도와주는 도구입니다.

변수 출력, 조건문, 반복문 등을 통해 동적인 HTML 페이지를 생성할 수 있어요.

📝 템플릿 사용 예시

<h1>Hello, {{ username }}!</h1>
{% if is_admin %}
<p>관리자 권한이 있습니다.</p>
{% else %}
<p>일반 사용자입니다.</p>
{% endif %}

이처럼 {{ 변수 }}를 통해 데이터를 출력하고, {% if %} ... {% endif %} 문법으로 조건을 제어할 수 있어요.

📁 정적 파일 처리(Static files)

정적 파일(static files)은 HTML과 함께 로드되는 CSS, JS, 이미지 파일을 말해요.

Django는 이러한 파일들을 별도로 관리하기 위한 시스템을 제공해요.

📦 폴더 구조 예시

myproject/
├── static/
│   ├── css/
│   │   └── style.css
│   └── js/
│       └── script.js
├── templates/
│   └── index.html

🔗 템플릿에서 정적 파일 사용하기

{% load static %}

{% load static %}을 선언하고, {% static '경로' %}를 사용하면 정적 파일을 안전하게 불러올 수 있어요.

이렇게 하면 개발 환경과 운영 환경 모두에서 호환성이 좋아집니다.

🧷 정리 한 줄 요약

템플릿은 Django가 HTML에 데이터를 주입할 수 있게 해주는 똑똑한 도구이고, 정적 파일 처리는 스타일과 동작을 책임지는 프론트엔드 리소스를 관리하는 방법이에요!

 

 

5. 템플릿 상속 개념 소개 🧱

여러 페이지를 가진 웹사이트를 만들다 보면, 모든 페이지에 공통적으로 들어가는 부분이 있죠?

예를 들면, 상단 메뉴, 푸터, 로고 같은 것들요.

이런 부분을 매번 복사해서 붙여넣는 건 비효율적이고, 나중에 유지보수도 어렵습니다.

Django는 이런 문제를 템플릿 상속이라는 기능으로 아주 깔끔하게 해결해줘요.

🏛️ 베이스 템플릿이란?

base.html 또는 layout.html이라고 불리는 이 베이스 템플릿은 공통 레이아웃을 정의해두는 템플릿이에요.

각 개별 페이지는 이 템플릿을 {% extends %}로 확장하고, {% block %} 태그를 통해 특정 부분만 바꿔서 사용할 수 있어요.

📐 베이스 템플릿 예제


  {% block title %}My Site{% endblock %}
  

My Website Header
  
    {% block content %}{% endblock %}
  © 2025 MySite
  


위 템플릿은 타이틀과 본문 부분을 block으로 정의해뒀고, 다른 템플릿에서 이걸 상속받아 사용하게 돼요.

🔁 상속받는 하위 템플릿 예시 --------------------------------------------------------------------------


{% extends "base.html" %}

{% block title %}홈 페이지{% endblock %}

{% block content %}

<p data-ke-size="size16">환영합니다! 여기는 홈입니다.</p>

{% endblock %}

home.htmlbase.html을 확장하면서 제목과 콘텐츠 영역만 바꿔 끼워넣은 거예요.

이렇게 하면 전체 구조는 유지하면서 내용만 바꾸는 게 가능해요!

💡 템플릿 상속의 장점

  • 중복 코드 제거로 생산성 향상 💼
  • 레이아웃 일관성 유지로 유지보수 용이 🔧
  • 각 페이지 별 핵심 콘텐츠에만 집중할 수 있음 🎯

📌 요약 정리

템플릿 상속은 기본 골격은 하나로 통일하고, 내용만 바꾸는 웹 페이지 관리 방식이에요.

규모가 커질수록 이 방식의 장점은 더 강력해집니다!

 

 

6. 예제와 함께 전체 흐름 복습하기 📚

지금까지 배운 내용을 하나의 흐름으로 묶어서 복습해볼까요?

Django에서 하나의 웹 페이지가 동작하는 과정을 예제 기반으로 정리해보면, 머릿속이 훨씬 깔끔해질 거예요!

📝 목표: 사용자 이름을 입력받아 인사하는 페이지 만들기

이 예제에서는 사용자가 /hello/홍길동처럼 이름을 URL로 전달하면, 그 이름을 화면에 보여주는 간단한 인사 페이지를 만들어요.

① URLconf 설정

# app/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('hello//', views.hello_user, name='hello'),
]

② View 함수 작성

# app/views.py
from django.shortcuts import render

def hello_user(request, username):
    context = {'username': username}
    return render(request, 'hello.html', context)

③ 템플릿 작성 

{% extends "base.html" %}

{% block title %}인사하기{% endblock %}

{% block content %}

{{ username }}님, 반가워요! 👋

{% endblock %}

💡 전체 동작 흐름 요약

  1. 1. 사용자가 /hello/홍길동을 입력
  2. 2. urls.py에서 해당 URL을 찾아 hello_user 뷰로 연결
  3. 3. 뷰 함수에서 받은 이름을 템플릿에 전달
  4. 4. hello.htmlbase.html을 상속받아 출력
  5. 5. 사용자 화면에 환영 메시지 출력 완료!

🎯 마무리 요약

Django는 URL, View, Template의 구조를 이해하고 적절히 연결하는 것만으로도 강력한 웹 페이지를 쉽게 만들 수 있어요.

오늘 배운 흐름을 반복해 익혀두면 어떤 웹 페이지든 자신 있게 구현할 수 있답니다!

 

 

마무리 🏁

여기까지 따라오시느라 정말 고생 많으셨어요!

오늘은 Django의 웹 개발에서 가장 핵심이 되는 구조들, 즉 프로젝트와 앱의 개념, MVT 아키텍처 흐름, URL과 View 연결, 템플릿과 정적 파일 처리, 템플릿 상속까지 모두 다뤄봤습니다.

이 글에서 다룬 내용은 Django 개발의 기반이 되는 핵심이기 때문에 꼭 숙지하시는 걸 추천드려요.

처음엔 복잡해 보일 수 있지만, 한두 번 실습해보면 금방 손에 익는 구조랍니다.

 

앞으로 게시판, 블로그, 쇼핑몰, 포트폴리오 사이트 등을 만들 때도 오늘 배운 흐름을 그대로 적용할 수 있어요. 혹시 다음 단계로 어디서부터 손대야 할지 막막하신가요? 그렇다면 지금 만든 구조에 간단한 게시글 모델과 폼을 추가해보세요. 점점 더 강력한 기능을 얹어갈 수 있을 거예요.

 

다음 글에서는 Django 모델(Model)과 데이터베이스 ORM에 대해 다뤄볼 예정이니 기대해주세요!

“코드는 직접 짜보는 만큼 이해도는 깊어진다.”

반응형
반응형

개발환경 구축과 Django 프로젝트 시작

처음 Django를 설치하고 프로젝트를 시작할 때,
어디서부터 손대야 할지 막막하셨죠?
이 글 하나면 OK! 🔧
반응형

 

안녕하세요,  여러분! 😄

오늘은 여러분이 Django라는 강력한 웹 프레임워크를 사용해 첫 프로젝트를 시작할 수 있도록 개발환경을 세팅하고, Django 프로젝트를 만드는 첫걸음을 함께 해보려 해요.

이 글은 단순히 코드를 나열하는 튜토리얼이 아니라, 왜 그렇게 해야 하는지까지도 친절히 설명할 테니, 걱정은 접어두시고 커피 한잔과 함께 따라와 주세요! ☕

특히 Python 기초만 알고 있어도 충분히 이해할 수 있게 구성되어 있어, Django 입문에 완벽한 가이드가 될 거예요.

 

1. 가상환경이란? 왜 필요한가요?

처음 Django를 공부하거나 개발 프로젝트를 시작할 때 가장 먼저 듣게 되는 단어가 바로 가상환경(virtual environment)입니다. 근데, 왜 굳이 이런 걸 써야 할까요? 🤔

그냥 파이썬 깔고 바로 쓰면 되는 거 아닌가요?

사실, 간단한 스크립트나 학습용 코드에는 크게 상관이 없을 수 있어요.

하지만 프로젝트마다 사용하는 라이브러리 버전이 다르거나 충돌이 발생하는 상황에서는 이야기가 달라집니다.

예를 들어, 프로젝트 A에서는 Django 3.2를, 프로젝트 B에서는 Django 4.0을 쓴다고 해보죠.

이런 경우, 시스템 전체에 Django를 설치했다면 서로 충돌이 날 수밖에 없어요.

💡 가상환경을 쓰면 좋은 점!

  • 프로젝트마다 독립된 환경 제공 → 충돌 방지
  • 불필요한 시스템 오염 방지 → 유지보수 용이
  • 협업 시, 환경 일관성 유지 → 배포도 쉬움

📌 실제로 어떻게 동작하나요?

가상환경은 단순히 파이썬 인터프리터와 라이브러리 디렉토리를 복사해서 독립된 환경으로 만들어 주는 거예요.

우리가 만든 가상환경 안에서는 시스템에 설치된 다른 라이브러리와 상관없이, 내가 원하는 버전만 설치해서 쓸 수 있죠.

🧪 예시로 알아보는 상황

항목 가상환경 없음 가상환경 사용
Django 버전 시스템 전역에 하나만 존재 프로젝트마다 다르게 가능
라이브러리 충돌 다른 프로젝트 영향 가능 서로 독립적
배포 환경 패키지 충돌로 실패할 수 있음 확실한 환경 재현 가능

가상환경에 대해 좀더 알아보실 분들은 아래 포스트를 참고해주세요

https://firstcoding.net/74

 

파이썬 가상환경(venv, virtualenv)으로 프로젝트 환경을 깔끔하게 관리하는 법

파이썬 가상환경(venv, virtualenv)으로 프로젝트 환경을 깔끔하게 관리하는 법프로젝트마다 패키지 버전이 달라서 자꾸 충돌난다면? 파이썬 가상환경으로 환경관리를 시작해보세요! 🧪  안녕하

firstcoding.net

 

 

이제 감이 오셨죠? 😀

다음 글에서는 가상환경을 직접 만들고 Django를 설치하는 실습을 해볼게요!

명령어 한 줄 한 줄, 왜 그런지까지 설명하며 알려드릴게요.

바로 다음 단계에서 만나죠!

 

 

2. 가상환경 만들기와 Django 설치하기

이번에는 실제로 가상환경을 만들고, Django를 설치하는 과정을 하나씩 해보겠습니다.

윈도우 사용자 기준으로 설명하지만, macOS나 리눅스도 거의 동일해요.

다만 경로나 명령어가 조금 다를 수 있으니 참고만 해주세요.

⚙️ Step-by-step: 가상환경 만들기

  1. 프로젝트를 위한 디렉토리를 만듭니다. 
  2. CLI 환경에서 아래 코드 실행
  3. mkdir my_django_project cd my_django_project
  4. 가상환경을 생성합니다. venv는 파이썬 기본 제공 가상환경 툴입니다.
    python -m venv venv
  5. 가상환경을 활성화합니다.
    • Windows: venv\Scripts\activate
    • macOS/Linux: source venv/bin/activate

🎉 명령어를 실행한 후, 프롬프트 앞에 (venv)가 붙으면 성공적으로 가상환경에 들어온 것입니다!



🌐 Django 설치하기

이제 본격적으로 Django를 설치해볼게요.

pip는 Python의 패키지 관리자로, Django도 pip를 통해 간단히 설치할 수 있어요.

pip install django

 


설치가 완료되면 다음과 같이 버전을 확인할 수 있습니다.

django-admin --version

💡 Tip: requirements.txt 만들기

앞으로 협업하거나 서버에 배포할 땐 requirements.txt 파일이 꼭 필요해요.

지금 설치된 패키지를 저장해두면 나중에 pip install -r requirements.txt 명령으로 똑같이 설치할 수 있죠!

pip freeze > requirements.txt

 

📎 설치 요약 정리

단계 명령어
1. 디렉토리 생성 mkdir my_django_project
2. 가상환경 생성 python -m venv venv
3. 가상환경 활성화 venv\Scripts\activate
4. Django 설치 pip install django

이제 준비는 끝났습니다. 🎉

다음 단계에서는 Django 프로젝트를 생성하고 실행하는 법을 배워볼 거예요.

준비되셨죠? 바로 다음 STEP에서 만나봐요!

 

 

3. Django 프로젝트 생성과 폴더 구조 이해

이제 드디어 본격적인 Django 프로젝트를 시작할 차례입니다!

가상환경도 만들고 Django도 설치했으니, 첫 프로젝트를 만들어볼까요?

이 단계에서는 django-admin이라는 명령어를 사용해서 새로운 프로젝트를 생성합니다.

🚀 django-admin startproject 명령어 사용하기

django-admin startproject config .

 

위 명령어에서 config는 프로젝트 이름입니다.

원하는 이름으로 바꿔도 돼요! 뒤에 붙은 .(점)은 “현재 디렉토리에 바로 생성하겠다”는 뜻인데, 폴더 구조가 한 번 더 중첩되는 걸 막아줘요.

💡 점(.)을 안 붙이면 어떻게 되나요?

config/config/처럼 디렉토리가 두 겹이 돼서 조금 헷갈릴 수 있어요.

.을 붙여주면 루트 디렉토리에 필요한 파일만 깔끔하게 생성됩니다!

📂 Django 프로젝트 기본 구조 설명

명령어를 실행하면 다음과 같은 디렉토리 구조가 만들어집니다.

my_django_project/
├── manage.py
├── config/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── asgi.py
│   └── wsgi.py
파일/디렉토리 설명
manage.py Django 명령어를 실행할 때 사용하는 메인 스크립트 (예: runserver, migrate)
settings.py 프로젝트의 모든 설정 정보 (DB, 앱 등록, 경로 등)
urls.py URL 라우팅을 담당하는 곳, 어떤 URL로 어떤 기능을 실행할지 지정
wsgi.py / asgi.py 웹 서버와 연결하기 위한 인터페이스 스크립트 (배포 시 사용)

VSCode 실행



아직은 생소한 파일이 많을 수 있지만, 앞으로 차근차근 다룰 거니까 걱정 마세요. 😊

이제 다음 단계에서는 manage.py를 이용해 Django 개발 서버를 실행하고, 환영 페이지를 띄워보는 실습을 진행할게요!


4. 개발 서버 실행하고 환영 페이지 보기

지금까지 프로젝트를 생성했고, 폴더 구조도 확인했죠?

이제 실제로 Django가 어떻게 동작하는지, 개발 서버를 실행해보고 웹 브라우저에서 결과를 확인해볼 시간이에요.

딱 10초만에 Django의 기본 환영 페이지를 만나볼 수 있어요! 🌈

▶️ 개발 서버 실행하기

가상환경이 활성화되어 있고, Django 프로젝트 디렉토리 안에 있다면 아래 명령어만 입력하면 됩니다.

python manage.py runserver

 

✅ 명령어 실행 후, 아래와 같은 메시지가 보이면 성공적으로 서버가 실행된 거예요!

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
April 17, 2025 - 22:30:02
Django version 4.x, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

🌐 Django 환영 페이지 보기

웹 브라우저를 열고 주소창에 다음을 입력해보세요:

http://127.0.0.1:8000/

 

 

이 주소는 로컬호스트(localhost), 즉 여러분의 컴퓨터를 의미합니다.

성공적으로 실행되었다면, Django의 멋진 초록색 체크 표시가 있는 환영 화면을 보게 될 거예요! 🎉

🤔 에러가 난다면?

  • 가상환경이 활성화되지 않았을 수 있어요.
  • venv\Scripts\activate 또는 source venv/bin/activate를 다시 확인!
  • manage.py 파일이 있는 디렉토리에서 실행했는지 확인!

📌 Django 개발 서버의 특징

항목 설명
자동 감지 코드 수정 시 서버 재시작 없이 자동 반영
기본 포트 8000번 포트를 사용 (--port 옵션으로 변경 가능)
개발 전용 운영 환경에서는 사용 ❌ (보안상 취약함)

어떠셨나요?

처음으로 브라우저에서 Django 프로젝트가 돌아가는 걸 확인하면 꽤 뿌듯하실 거예요!

다음은 프로젝트 내부 파일들 — 특히 settings.py, urls.py — 들의 역할을 자세히 살펴보겠습니다. 🛠️

 

 

5. 프로젝트 주요 파일 설명 (settings.py, urls.py 등)

Django 프로젝트를 만들고 서버도 돌려봤는데, 폴더 안에 있는 파일들... 솔직히 처음 보면 좀 겁나죠? 😅

settings.py, urls.py, wsgi.py, asgi.py 등등… 이름은 많은데 도대체 다 무슨 역할을 하는 걸까요?

이번에는 이 중요한 파일들을 하나하나 살펴보면서, Django가 어떤 구조로 움직이는지 확실히 이해해보는 시간을 가질게요. 🧠

⚙️ settings.py – 프로젝트 설정의 본부

Django에서 가장 중요한 파일 중 하나예요.

이름 그대로 프로젝트 전반의 설정을 담당합니다.

데이터베이스 연결부터 앱 등록, 보안 설정까지 모두 여기에 있어요.

  • INSTALLED_APPS – 사용할 앱 목록 (예: admin, auth 등)
  • MIDDLEWARE – 요청/응답을 가로채는 중간 처리기 리스트
  • DATABASES – 어떤 DB를 쓸지 (기본은 SQLite)
  • STATIC_URL – 정적 파일(CSS, JS 등)의 기본 경로

🌐 urls.py – URL과 View를 연결해주는 라우터

클라이언트가 어떤 URL로 접근했을 때 어떤 페이지나 기능을 보여줄지를 설정하는 파일입니다.

즉, URL ↔ View 함수의 연결고리 역할을 하죠.

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

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

 

위 코드는 /admin/ 경로로 접속하면 Django의 관리자 페이지로 이동하도록 설정한 예입니다.
앞으로 여기에 직접 만든 뷰 함수들을 추가해가며 프로젝트를 확장할 거예요!

🌐 wsgi.py & asgi.py – 서버와 Django의 연결고리

이 두 파일은 웹 서버(Gunicorn, Daphne 등)가 Django 앱과 통신할 수 있도록 해주는 인터페이스 스크립트입니다. 단, 개발 단계에서는 거의 사용할 일이 없어요. 프로젝트를 실제 배포할 때 사용된다고 기억만 해두시면 충분합니다!

파일 설명
wsgi.py 동기 방식 배포용 (예: Gunicorn)
asgi.py 비동기 웹 서버용 (예: Daphne, Uvicorn)


이처럼 Django 프로젝트의 각 파일은 서로 역할을 나누어 구조적으로 움직입니다.

각각을 이해하고 있으면 앞으로 앱 개발 시 어떤 파일을 수정해야 하는지, 어디를 먼저 살펴봐야 하는지 훨씬 수월해질 거예요.

 

 

6. 자주 묻는 질문 및 초보자 팁 ✨

처음 Django를 접할 때 헷갈리는 부분이 정말 많죠?

특히 에러 메시지가 뜨면 ‘뭐가 뭔지 모르겠어!’ 하고 당황하기 쉬워요.

그래서 이 섹션에서는 실제 수강생이나 독자들이 자주 물어봤던 질문과, 제가 직접 겪으며 깨달았던 꿀팁들을 정리해드릴게요.

“아 이거 나만 몰랐던 거 아니었구나!” 싶은 순간이 올지도 몰라요. 😅

❓ 자주 묻는 질문 (FAQ)

  1. Q. 가상환경은 프로젝트마다 꼭 만들어야 하나요?
    네, 무조건 만드는 걸 추천드려요!
    그래야 라이브러리 버전 충돌을 막을 수 있고, 협업 시에도 동일한 환경을 유지할 수 있어요.
  2. Q. pip install이 안 될 때는 어떻게 해야 하나요?
    인터넷 연결 상태를 먼저 확인해보세요.
    그리고 python -m pip install --upgrade pip로 pip 버전을 최신으로 유지하는 것도 중요해요.
  3. Q. runserver 했는데 접속이 안 돼요!
    가상환경이 활성화되어 있는지, manage.py가 있는 디렉토리에서 명령어를 실행했는지 다시 확인해보세요.
  4. Q. Django 버전은 어떤 게 좋아요?
    최신 버전을 사용하는 것이 보안과 성능 면에서 좋아요.
    다만, 공식 문서에서 권장하는 LTS 버전을 사용하는 것도 안정적인 선택이에요.

💡 실수 방지용 초보자 꿀팁!

  • 매번 서버를 끄고 켤 필요 없어요!
    Django는 코드 변경 사항을 자동으로 감지해서 반영해줘요.
    서버만 켜두면 실시간으로 확인할 수 있어요.
  • settings.py는 손댈 땐 복사본부터!
    혹시 오류 나면 되돌릴 수 있도록 settings.py 파일을 백업해두세요.
  • 에러 메시지를 잘 읽자!
    Django는 에러 메시지를 정말 친절하게 써줘요.
    천천히 읽으면 해결 실마리가 보입니다.
  • pyenv나 poetry 등 도구도 나중에 배워보자!
    파이썬 프로젝트를 더 잘 관리할 수 있는 도구들이에요.
    초보 땐 몰라도 되지만, 나중엔 꼭 도움이 될 거예요.

처음부터 완벽할 필요는 없어요. 저도 Django 처음 시작할 땐 runserver 한 줄 치는 것도 긴장했거든요. 😅

중요한 건 에러를 두려워하지 않고 천천히 쌓아가는 태도입니다.

이제 여러분도 Django의 첫 문을 열었으니, 계속해서 앱을 만들고 실습하면서 자신감을 키워보세요!

 

 

Django 입문의 첫 발걸음을 축하합니다! 🎉

여기까지 오신 여러분, 정말 수고 많으셨어요. 👏

처음에는 생소했던 가상환경 생성부터 Django 설치, 프로젝트 구조 이해, 그리고 서버 실행까지 모두 직접 해보셨습니다.

처음 접하면 낯설고 어색했던 단계들이 이제는 조금은 익숙해졌을 거예요.

Django는 강력하고 유연한 웹 프레임워크입니다.

아직은 단순한 “Hello Django” 단계지만, 앞으로 여러분은 이걸 기반으로 블로그, 게시판, 로그인 시스템, API 서버까지 만들 수 있어요.

이제 정말 웹 개발자가 되는 길이 시작된 것이죠.

 

다음 단계로는 앱 생성 및 라우팅, 데이터베이스 모델 만들기, CRUD 구현, 템플릿 시스템 등으로 나아가면 됩니다.

이 블로그 시리즈에서도 그 모든 과정들을 차근차근 함께 걸어갈 예정이니, 즐겁게 따라와 주세요!

🌱 작은 성공이 쌓이면, 어느새 성장합니다

오늘처럼 하나씩 직접 따라해보고 작은 성취감을 느껴보세요.

그게 쌓이면 진짜 실력이 됩니다.

개발은 재능보다 꾸준함이 더 중요한 분야랍니다. 저도 그랬고요. 😉

 

여러분의 Django 첫 걸음을 응원합니다! 🚀

다음 글에서는 앱 생성과 URL 연결로 한 걸음 더 나아가볼게요.

반응형
반응형

웹 개발 기초와 Django 프레임워크 개요

여러분, Python만 알면 웹 사이트도 뚝딱 만들 수 있다면 믿으시겠어요?
Django는 그걸 가능하게 해주는 도구예요!

 

 

안녕하세요, 여러분~! 😊
혹시 "웹 개발"이라는 말만 들어도 벌써 머리가 복잡해지는 분 계신가요? 저도 처음엔 그랬어요.

HTML, CSS, JavaScript, 서버, 데이터베이스... 어디서부터 시작해야 할지 막막했거든요.

그래서 이 시리즈에서는 여러분이 편안하게 웹 개발의 기초를 익힐 수 있도록, 정말 친절하고 쉽게!

Django라는 프레임워크를 중심으로 하나하나 알려드릴 거예요.

오늘은 그 첫 걸음으로, 웹 개발이 무엇인지, HTTP란 무엇이며, Django는 어떤 역할을 하는지, 그리고 개발을 시작하기 위한 로컬 환경은 어떻게 준비하는지 이야기해볼게요.

마치 요리를 시작하기 전 재료부터 차근히 준비하듯, 개발도 준비가 반이니까요!

 

1. HTTP란 무엇인가요? 🌐

웹 개발을 제대로 이해하려면 가장 먼저 HTTP라는 용어부터 알아야 해요.

HyperText Transfer Protocol의 약자인 HTTP는 인터넷에서 정보를 주고받을 때 사용하는 기본 규칙이에요.

쉽게 말해, 웹 브라우저와 서버가 대화할 때 사용하는 언어죠.

우리가 웹 브라우저에 주소를 입력하면 HTTP 요청(Request)이 발생하고, 서버는 거기에 맞는 HTTP 응답(Response)을 보냅니다.

예를 들어,

여러분이 https://www.google.com에 접속하면 브라우저는 "이 주소에 해당하는 내용을 주세요!"라고 요청하고, 서버는 "여기 있어요!" 하면서 응답을 보내는 거예요.

📋 주요 HTTP 메서드 정리

메서드 설명 예시
GET 데이터를 조회할 때 사용 /articles
POST 새로운 데이터를 생성할 때 사용 /articles (글 작성)
PUT 기존 데이터를 수정할 때 사용 /articles/3 (3번 글 수정)
DELETE 데이터를 삭제할 때 사용 /articles/3 (3번 글 삭제)
  • 클라이언트 = 웹 브라우저, 서버 = 정보를 제공하는 곳
  • HTTP는 이 둘의 소통을 위한 ‘공용 언어’예요
  • 다양한 메서드를 통해 어떤 ‘행동’을 할지 서버에 알려줘요

정리하자면, HTTP는 웹 개발의 기본 중의 기본입니다.

이 개념을 확실히 이해하고 있어야 웹 프레임워크가 하는 일을 자연스럽게 받아들일 수 있어요.

다음 섹션에서는 웹 프레임워크가 도대체 무슨 일을 해주는지도 살펴볼게요.

 

 

2. 웹 프레임워크의 개념과 역할 🧱

웹 개발을 처음 접하는 분들은 "웹 프레임워크"라는 말이 좀 낯설게 느껴질 수 있어요.

웹 프레임워크란 쉽게 말해서, 웹사이트를 만들기 위한 재료와 조리도구가 모두 포함된 요리 세트라고 생각하면 됩니다.

우리가 만약 웹 프레임워크 없이 개발한다면, 요청 처리, URL 연결, 폼 검증, 데이터 저장, 보안, 세션 등 모든 걸 직접 다 만들어야 해요.

마치 라면도 면부터 직접 뽑고, 스프도 만들고, 그릇도 빚는 느낌... 😵‍💫 하지만 프레임워크를 사용하면 이런 반복적인 작업들을 자동화하고 간편화해줍니다.

💡 웹 프레임워크가 하는 일

  • 사용자가 입력한 URL을 어떤 기능과 연결할지 결정해요 (라우팅)
  • 사용자의 입력값을 안전하게 처리해줘요 (폼 검증, 보안 필터)
  • 데이터베이스와 연결해서 정보를 읽고 쓰게 해줘요
  • 사용자가 보는 웹 페이지도 만들어 줘요 (템플릿 렌더링)

✔ 왜 웹 프레임워크를 써야 할까?

  1. 복잡한 웹 기능을 빠르고 쉽게 구현할 수 있어서
  2. 보안, 성능, 유지보수 등 전문가들이 설계한 기능을 그대로 활용할 수 있어서
  3. 문서화와 커뮤니티가 잘 되어 있어서 문제 해결이 쉬워요

이제 왜 웹 프레임워크가 중요한지 감이 오시죠?

Django는 그런 프레임워크 중에서도 아주 강력하고, 쉬우며, 실무에서도 많이 쓰이는 대표적인 녀석이에요. 다음 장에서는 Django가 왜 그렇게 많은 사랑을 받는지 그 매력을 살펴보죠!

 

 

3. Django의 특징과 장점 ✨

Django(장고)는 Python 기반의 웹 프레임워크예요.

"The web framework for perfectionists with deadlines"라는 슬로건처럼, 빠르고 깔끔한 개발을 원하는 사람들에게 안성맞춤이에요. 🧑‍💻

처음 접하면 다소 방대해 보일 수 있지만, 알고 보면 개발자의 귀차니즘을 가장 잘 이해하는 프레임워크랍니다!

💎 Django의 대표적인 장점

특징 설명
빠른 개발 폼, 인증, 관리자 페이지 등 대부분 기능을 기본 제공
보안 XSS, CSRF, SQL Injection 등 웹 보안 이슈에 강함
확장성 다양한 앱을 쉽게 붙여서 서비스 확장이 가능함
관리자 기능 자동으로 생성되는 관리자 페이지는 신의 한 수!

📌 이런 분들에게 강력 추천!

  • 프론트엔드보다 백엔드가 더 궁금한 분
  • 서비스 MVP를 빠르게 만들어보고 싶은 스타트업 창업자
  • Python을 배워봤고 이제 웹을 해보고 싶은 분!

Django는 국내외 수많은 웹사이트에서 실전(!)으로 쓰이고 있어요.

여러분도 곧 Django로 진짜 작동하는 웹 서비스를 만들 수 있을 거예요.

이제 Django가 어떻게 구조화되어 있는지, 그 핵심인 MVT 패턴으로 넘어가 볼까요?

 

 

4. Django의 MVT 아키텍처 이해 🧩

웹 프레임워크마다 나름의 아키텍처 구조를 갖고 있어요.

Django에서는 MVT(Model-View-Template) 패턴을 사용합니다.

이건 흔히 들어본 MVC(Model-View-Controller)와 비슷하면서도 Django만의 방식이 녹아 있어요.

📚 MVT 구성요소 한눈에 보기

구성요소 역할 설명
Model 데이터 구조 설계 DB 테이블과 직접 연결, 데이터 읽고 쓰기 담당
View 비즈니스 로직 요청 처리, 어떤 데이터를 보여줄지 결정
Template 사용자에게 보여질 UI HTML로 데이터를 표현하는 데 사용

📌 Django에서의 흐름 정리

  1. 사용자가 웹사이트에 어떤 요청을 보냅니다 (예: 게시글 목록 보기).
  2. View가 그 요청을 받고, 필요한 데이터를 Model에서 가져옵니다.
  3. 가져온 데이터를 Template에 넘겨서 예쁘게 보여줍니다.

이렇게 역할을 명확히 나눔으로써 개발자는 로직만, 디자이너는 UI만 집중할 수 있어요.

협업도 편하고, 유지보수도 쉬워지는 Django의 큰 장점 중 하나랍니다!

이제 Django의 구조까지 살펴봤으니, 실전 준비를 해볼 차례죠.

다음 파트에서는 여러분의 PC에서 Django 개발을 시작할 수 있도록 Windows 개발 환경을 셋업하는 방법을 알아봅니다!

 

 

5. Windows에서 개발환경 준비하기 🛠️

본격적으로 Django를 사용해서 웹 개발을 하려면, 먼저 내 PC에 개발환경부터 갖춰야 해요.

이번 파트에서는 Windows 기반의 로컬 개발환경을 단계별로 구성하는 법을 알려드릴게요.

🔧 Step-by-Step 개발환경 설정 가이드

  1. Python 설치
  2. 가상환경(venv) 설정
  3. 필수 패키지 설치 (pip 이용)
  4. Django 설치 및 프로젝트 시작

1. Python 설치하기 🐍

공식 사이트에 들어가서 Python 최신 버전을 다운로드하고 설치합니다.

설치 시 "Add Python to PATH" 옵션을 꼭 체크해야 해요!

 

Download Python

The official home of the Python Programming Language

www.python.org


파이썬 설치 관련 내용 확인
https://firstcoding.net/54

 

파이썬 개발환경 구축 완벽 가이드 (2025 최신판)

파이썬 개발환경 구축 완벽 가이드 (2025 최신판)처음 파이썬을 배우려는데, 설치부터 뭐가 이렇게 많아?VSCode? 파이참? 뭐가 뭔지 모르겠다면 이 글 하나면 끝!  안녕하세요 😊요즘 AI 열풍 덕분

firstcoding.net

 

2. 가상환경 만들기 💡

가상환경은 프로젝트마다 독립적인 패키지 공간을 만들어줘요. 아래 명령어를 실행해볼게요.

python -m venv venv
venv\Scripts\activate

성공하면 명령 프롬프트에 (venv)가 붙어요.

 

가상환경에 대해 좀더 알아보실 분들은 아래 포스트를 참고해주세요

https://firstcoding.net/74

 

파이썬 가상환경(venv, virtualenv)으로 프로젝트 환경을 깔끔하게 관리하는 법

파이썬 가상환경(venv, virtualenv)으로 프로젝트 환경을 깔끔하게 관리하는 법프로젝트마다 패키지 버전이 달라서 자꾸 충돌난다면? 파이썬 가상환경으로 환경관리를 시작해보세요! 🧪  안녕하

firstcoding.net

 

이제 여기서 Django를 설치하면 됩니다!

3. Django 설치 및 프로젝트 시작 🚀

pip install django
django-admin startproject mysite
cd mysite
python manage.py runserver

위 명령어까지 완료했다면 127.0.0.1:8000 주소로 접속해보세요!

Django 환영 페이지가 나온다면 성공이에요! 🎉

여러분은 지금 Django 웹 개발의 첫 발을 디디셨어요.

앞으로 이 환경에서 앱을 만들고, 데이터베이스를 연결하고, 멋진 서비스를 구현하게 될 거예요!

 

 

6. Python 설치와 가상환경 설정 ⚙️

앞선 STEP에서 간단하게 개발환경을 구성해봤다면, 이번에는 조금 더 자세히 Python 설치와 가상환경 설정에 대해 알아보겠습니다. 특히 여러 프로젝트를 동시에 개발하려면 가상환경을 잘 활용하는 습관이 정말 중요해요.

📌 Python 설치 팁

  • 설치 중 반드시 “Add Python to PATH” 체크!
  • 버전 충돌 방지를 위해 최신 버전 사용 권장

설치 후 명령 프롬프트에서 다음 명령어로 확인해볼 수 있어요.

python --version
pip --version

🌱 가상환경(venv) 개념 다시 보기

가상환경은 말 그대로 프로젝트마다 독립적인 Python 공간이에요.

예를 들어,

블로그 웹사이트에선 Django 4.2 버전을 쓰고, 쇼핑몰 웹사이트에선 3.2 버전을 쓸 수도 있어요.

이런 걸 가능하게 해주는 게 바로 가상환경입니다.

✔ 가상환경 관리 명령어

명령어 설명
python -m venv venv 가상환경 생성
venv\Scripts\activate 가상환경 활성화 (Windows)
deactivate 가상환경 종료

📎 실전 꿀팁

  • Visual Studio Code를 쓰면 터미널에서 바로 가상환경을 인식해줘요!
  • requirements.txt 파일을 만들어 두면 나중에 패키지 설치가 훨씬 쉬워요.

지금까지 Python 설치와 가상환경 설정에 대해 배워봤어요.

이제 여러분은 Django 개발을 위한 기초 체력을 모두 갖췄다고 볼 수 있죠.

그럼 이제, 이 여정을 마무리하면서 여러분이 앞으로 어떻게 시작하면 좋을지 정리해볼게요!

 

 

🧩 이제 Django 세계로 출발해볼까요?

여기까지 따라오셨다면 정말 수고 많으셨어요!

HTTP의 기본 구조부터 Django의 매력, MVT 패턴, 그리고 개발환경 설정까지 웹 개발을 시작하는 데 꼭 필요한 기초를 차근차근 다졌습니다. 👏

이제 여러분은 개발자 노트북을 열고, Django로 나만의 웹 서비스를 만들 준비가 된 셈이죠.

"아직 잘 모르겠어요..."라는 생각이 드시더라도 괜찮아요.

개발은 해보면서 익히는 것이니까요.

 

다음 글부터는 Django 프로젝트를 하나씩 만들어보면서 실습 중심으로 배워볼 거예요.

"왜 이렇게 동작하지?"라는 의문이 들면 이 글로 다시 돌아와 주세요.

기초는 늘 탄탄하게, 다시 반복할수록 더 잘 보이거든요 😉

 

그럼 우리 다음 글에서는 Django 프로젝트를 직접 만드는 방법으로 이어가 볼게요.

같이 실습하면서 진짜 서비스를 만들 준비되셨죠? 🎯

반응형

+ Recent posts