Django development sequence

Django 개발 μˆœμ„œ

  1. project 및 app 생성

# ν”„λ‘œμ νŠΈ 생성
django-admin startproject project_name
# μ•± 생성
python manage.py startapp app_name
  • μƒμ„±ν•œ 앱을 settings.py의 INSTALLED_APPS에 등둝


  1. λͺ¨λΈ(Model) 섀계

  • λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•  ꡬ쑰λ₯Ό μ •μ˜

  • 예: models.pyμ—μ„œ ν…Œμ΄λΈ” μ •μ˜

from django.db import models

# Create your models here.
class MainMarket(models.Model):
    market_ID = models.CharField(max_length=300, primary_key=True)
    area = models.CharField(max_length=50)
    name = models.CharField(max_length=50)
    area_num = models.CharField(max_length=50)
    open_date = models.DateField(auto_now_add=True)
    worker_num = models.IntegerField()
  • λͺ¨λΈ μž‘μ„± ν›„ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 파일 생성

python manage.py makemigrations
  • λ°μ΄ν„°λ² μ΄μŠ€μ— 적용

python manage.py migrate
  • migrate λͺ…λ Ήμ–΄λŠ” Djangoμ—μ„œ 데이터 베이슀 ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜κ±°λ‚˜ μ—…λ°μ΄νŠΈν•  λ•Œ μ‚¬μš©λœλ‹€.

  • Django의 λͺ¨λΈμ„ λ³€κ²½ν•˜κ±°λ‚˜ μƒˆλ‘œμš΄ λͺ¨λΈμ„ λ§Œλ“€κ³  λ‚˜λ©΄ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ νŒŒμΌμ„ μƒμ„±ν•˜κ³  μ μš©ν•΄μ•Ό ν•œλ‹€.


  1. κ΄€λ¦¬μž μ‚¬μ΄νŠΈ(Admin) μ„€μ •

  • admin.py에 λͺ¨λΈ 등둝

from .models import ExampleModel

admin.site.register(ExampleModel)
  • κ΄€λ¦¬μž 계정 생성

python manage.py createsuperuser
  • κ΄€λ¦¬μž μ‚¬μ΄νŠΈλ₯Ό 톡해 데이터λ₯Ό ν™•μΈν•˜κ³  관리


  1. 폼을 Viewμ—μ„œ ν™œμš©

  • views.py μ—μ„œ 폼을 μ²˜λ¦¬ν•˜λŠ” 둜직 μΆ”κ°€

from django.shortcuts import render, redirect
from .models import ExampleModel
from .forms import ExampleForm

def example_create(request):
    if request.method == "POST":
        form = ExampleForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('example')  # 데이터 μ €μž₯ ν›„ λ¦¬λ””λ ‰νŠΈ
    else:
        form = ExampleForm()
    return render(request, 'example_form.html', {'form': form})
  • 폼을 HTML ν…œν”Œλ¦Ώμ— λ Œλ”λ§

    • templates/app_name/example_form.html에 폼을 λ Œλ”λ§ν•˜λŠ” μ½”λ“œ μž‘μ„±

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">μ €μž₯</button>
</form>

  1. λ·°(View) μž‘μ„±

  • views.py에 Form을 μ²˜λ¦¬ν•˜λŠ” 둜직 μž‘μ„±

  • 예: νŠΉμ • 데이터λ₯Ό κ°€μ Έμ˜€λŠ” ν•¨μˆ˜ν˜• λ·°

from django.shortcuts import render
from .models import ExampleModel

def example_view(request):
    data = ExampleModel.objects.all()
    return render(request, 'example.html', {'data': data})

  1. ν…œν”Œλ¦Ώ(Template) μž‘μ„±

  • HTML ν…œν”Œλ¦Ώ μž‘μ„±

    • app_name/templates/app_name/example.html에 HTML 파일 생성

    • ν…œν”Œλ¦Ώμ—μ„œ 데이터λ₯Ό ν‘œμ‹œ

<ul>
    {% for item in data %}
    <li>{{ item.name }} - {{ item.description }}</li>
    {% endfor %}
</ul>

  1. URL μ„€μ •

  • ν”„λ‘œμ νŠΈ 레벨 urls.py와 μ•± 레벨 urls.pyμ—μ„œ URL λ§€ν•‘ μ„€μ •

  • app_name/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('example/', views.example_view, name='example'),
    path('example/create/', views.example_create, name='example_create'),  # 폼 μΆ”κ°€
]
# / = Trailing Slash. djangoμ—μ„œ μ‚¬μš© ꢌμž₯
  • project_name/urls.py

from django.urls import include, path

urlpatterns = [
    path('app_name/', include('app_name.urls')),
]

  1. 정적 파일 및 λ―Έλ””μ–΄ 파일 μ„€μ •

  • 정적 파일 (static/)κ³Ό λ―Έλ””μ–΄ 파일 (media/) 경둜 μ„€μ •

  • 정적 파일 μ„œλΉ™ ν…ŒμŠ€νŠΈ

python manage.py collectstatic

  1. ν…ŒμŠ€νŠΈ μž‘μ„±

  • 각 μ•±λ³„λ‘œ tests.py에 μœ λ‹› ν…ŒμŠ€νŠΈ μž‘μ„±

  • λͺ…λ Ήμ–΄λ‘œ ν…ŒμŠ€νŠΈ μ‹€ν–‰

python manage.py test

  1. 배포 μ€€λΉ„

  • DEBUG μ„€μ • λ³€κ²½, ALLOWED_HOSTS μ§€μ •

  • WSGI μ„œλ²„ μ‚¬μš© (예: Gunicorn, uWSGI).

  • μ›Ή μ„œλ²„μ™€ μ—°κ²° (예: Nginx, Apache)

Last updated