Django development sequence
Django κ°λ° μμ
project λ° app μμ±
# νλ‘μ νΈ μμ±
django-admin startproject project_name
# μ± μμ±
python manage.py startapp app_name
μμ±ν μ±μ
settings.py
μINSTALLED_APPS
μ λ±λ‘
λͺ¨λΈ(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μ λͺ¨λΈμ λ³κ²½νκ±°λ μλ‘μ΄ λͺ¨λΈμ λ§λ€κ³ λλ©΄ λ§μ΄κ·Έλ μ΄μ νμΌμ μμ±νκ³ μ μ©ν΄μΌ νλ€.
κ΄λ¦¬μ μ¬μ΄νΈ(Admin) μ€μ
admin.py
μ λͺ¨λΈ λ±λ‘
from .models import ExampleModel
admin.site.register(ExampleModel)
κ΄λ¦¬μ κ³μ μμ±
python manage.py createsuperuser
κ΄λ¦¬μ μ¬μ΄νΈλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό νμΈνκ³ κ΄λ¦¬
νΌμ 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>
λ·°(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})
ν νλ¦Ώ(Template) μμ±
HTML ν νλ¦Ώ μμ±
app_name/templates/app_name/example.html
μ HTML νμΌ μμ±ν νλ¦Ώμμ λ°μ΄ν°λ₯Ό νμ
<ul>
{% for item in data %}
<li>{{ item.name }} - {{ item.description }}</li>
{% endfor %}
</ul>
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')),
]
μ μ νμΌ λ° λ―Έλμ΄ νμΌ μ€μ
μ μ νμΌ (
static/
)κ³Ό λ―Έλμ΄ νμΌ (media/
) κ²½λ‘ μ€μ μ μ νμΌ μλΉ ν μ€νΈ
python manage.py collectstatic
ν μ€νΈ μμ±
κ° μ±λ³λ‘
tests.py
μ μ λ ν μ€νΈ μμ±λͺ λ Ήμ΄λ‘ ν μ€νΈ μ€ν
python manage.py test
λ°°ν¬ μ€λΉ
DEBUG
μ€μ λ³κ²½,ALLOWED_HOSTS
μ§μ WSGI μλ² μ¬μ© (μ: Gunicorn, uWSGI).
μΉ μλ²μ μ°κ²° (μ: Nginx, Apache)
Last updated