728x90
반응형
프로젝트 & 앱 생성
먼저, 프로젝트 디렉터리를 만들고 가상환경을 설정한 후 Django를 설치합니다.
mkdir mysite
cd mysite
python -m venv venv
가상환경을 활성화한 후에 Django를 설치하고 프로젝트를 생성합니다.
# 가상환경 활성화 (Windows)
.\venv\Scripts\activate
# Django 설치
pip install django
# 프로젝트 생성
django-admin startproject tutorialdjango .
python manage.py migrate
python manage.py runserver
이제 tutorialdjango 프로젝트가 생성되었으니 main과 blog라는 두 개의 앱을 생성합니다.
python manage.py startapp main
python manage.py startapp blog
URL 설계
settings.py에서 새로 생성한 앱들을 추가하고, 모든 호스트에서 접근 가능하도록 설정을 변경합니다.
# tutorialdjango/settings.py
ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
...
'main',
'blog',
]
그 다음, 프로젝트 레벨의 urls.py와 앱 레벨의 urls.py를 수정하여 원하는 URL 구조를 만듭니다.
프로젝트 레벨 urls.py
# tutorialdjango/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('main.urls')),
path('blog/', include('blog.urls')),
]
앱 레벨 urls.py
먼저 main 앱의 urls.py를 만듭니다.
# main/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
]
그리고 blog 앱의 urls.py도 만듭니다.
# blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.blog_home, name='blog_home'),
path('<int:post_id>/', views.blog_detail, name='blog_detail'),
]
뷰와 템플릿
각 앱의 views.py에서 원하는 뷰 함수를 정의합니다.
main 앱의 뷰
# main/views.py
from django.shortcuts import render
def home(request):
return render(request, 'main/home.html')
blog 앱의 뷰
# blog/views.py
from django.shortcuts import render
def blog_home(request):
return render(request, 'blog/blog_home.html')
def blog_detail(request, post_id):
context = {'post_id': post_id}
return render(request, 'blog/blog_detail.html', context)
이제 해당 뷰 함수에 매핑될 HTML 템플릿 파일을 만듭니다.
템플릿 상속
base.html이라는 기본 템플릿을 정의하고, 다른 HTML 파일에서 이를 상속받아 사용할 수 있습니다.
base.html
<!-- templates/base.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}My Blog{% endblock %}</title>
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
</head>
<body>
<header>
<!-- 메뉴바 등 공통 요소 -->
</header>
<main role="main" class="container">
{% block content %}
{% endblock %}
</main>
<footer>
<!-- 푸터 등 공통 요소 -->
</footer>
</body>
</html>
home.html
<!-- templates/main/home.html -->
{% extends 'base.html' %}
{% block title %}Home{% endblock %}
{% block content %}
<h1>Welcome to My Blog</h1>
{% endblock %}
blog_home.html
<!-- templates/blog/blog_home.html -->
{% extends 'base.html' %}
{% block title %}Blog Home{% endblock %}
{% block content %}
<h1>Blog Home</h1>
{% endblock %}
blog_detail.html
<!-- templates/blog/blog_detail.html -->
{% extends 'base.html' %}
{% block title %}Blog Detail{% endblock %}
{% block content %}
<h1>Blog Post {{ post_id }}</h1>
{% endblock %}
Bootstrap과 정적 파일
Bootstrap을 활용하여 스타일을 적용합니다. static 디렉터리를 생성하고 CSS 파일을 추가합니다.
settings.py
# tutorialdjango/settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
BASE_DIR / "static",
]
디렉터리 구조
mysite/
static/
css/
bootstrap.min.css
이제 Bootstrap을 적용한 템플릿을 만들 수 있습니다. 위 단계들을 통해 Django 프로젝트를 생성하고, 블로그 형태의 웹사이트를 구축하는 기본적인 과정을 살펴보았습니다. 이 과정을 통해 Django의 기본 기능과 템플릿 상속, Bootstrap의 활용 방법을 이해할 수 있습니다. 추가적으로 필요한 기능들을 구현하며 프로젝트를 확장해보세요!