Maximize Your Potential

BackEnd

[Python BootCamp]Django로 가상환경부터 간단한 웹사이트 구축하기

maxworld 2024. 8. 10. 13:24
728x90
반응형

Django로 가상환경부터 간단한 웹사이트 구축하기

 

프로젝트 & 앱 생성

먼저, 프로젝트 디렉터리를 만들고 가상환경을 설정한 후 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의 활용 방법을 이해할 수 있습니다. 추가적으로 필요한 기능들을 구현하며 프로젝트를 확장해보세요!