Django에서 새 앱을 만들 때 (startapp 사용)
새 앱을 만들어야 할 때의 몇 가지 일반적인 시나리오는 다음과 같습니다.
- 모델 및 뷰가 서로 다른 기능 영역을 나타내는 경우: 서로 다른 기능 영역 (예: 고객 관리, 주문 처리, 제품 카탈로그)을 위한 모델과 뷰를 별도의 앱으로 그룹화하면 코드를 더욱 명확하고 관리하기 쉽습니다.
- 앱을 다른 프로젝트에서 재사용하려는 경우: 나중에 다른 프로젝트에서 사용할 수 있는 독립적인 앱으로 기능을 패키징하면 코드 재사용성을 높일 수 있습니다.
- 앱에 고유한 설정이 필요한 경우: 앱에 고유한 설정 (예: URL 네임스페이스, 템플릿 디렉터리)이 필요한 경우 별도의 앱으로 분리하면 코드를 더욱 명확하게 유지할 수 있습니다.
- 이 기능은 다른 기능과 얼마나 밀접하게 결합되어 있습니까?
- 이 기능을 나중에 다른 프로젝트에서 재사용할 가능성이 있습니까?
- 이 기능에 고유한 설정이 필요합니까?
새 앱을 만드는 방법은 다음과 같습니다.
python manage.py startapp myapp
위 명령은 myapp
라는 이름의 새 앱을 만들 것입니다. 이 앱에는 models.py, views.py, admin.py 및 tests.py와 같은 기본 파일이 포함됩니다.
앱을 만든 후에는 모델, 뷰, URL 및 기타 기능을 개발할 수 있습니다.
Django에서 새 앱 만들기: 예제 코드
새 앱 만들기
python manage.py startapp polls
모델 정의하기
polls/models.py
파일에 다음 코드를 추가합니다.
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=255)
pub_date = models.DateTimeField()
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=255)
votes = models.IntegerField(default=0)
이 코드는 두 개의 모델을 정의합니다.
뷰 만들기
from django.shortcuts import render
from .models import Question, Choice
def index(request):
latest_question = Question.objects.order_by('-pub_date').first()
context = {'latest_question': latest_question}
return render(request, 'polls/index.html', context)
def detail(request, question_id):
question = Question.objects.get(pk=question_id)
choices = question.choice_set.all()
context = {'question': question, 'choices': choices}
return render(request, 'polls/detail.html', context)
URL 설정하기
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('<int:question_id>/', views.detail, name='detail'),
]
/
:index
뷰를 호출합니다./polls/<int:question_id>/
:detail
뷰를 호출하고question_id
매개변수를 전달합니다.
템플릿 만들기
polls
앱 디렉터리에 templates
디렉터리를 만들고 polls
라는 이름의 서브 디렉터리를 만듭니다. polls
디렉터리에 index.html
및 detail.html
파일을 추가합니다.
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Polls</title>
</head>
<body>
<h1>Latest poll</h1>
<p>
{{ latest_question.question_text }}
</p>
<a href="{% url 'detail' latest_question.id %}">Vote now!</a>
</body>
</html>
detail.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ question.question_text }}</title>
</head>
<body>
<h1>{{ question.question_text }}</h1>
<form method="post">
{% for choice in choices %}
<input type="radio" id="{{ choice.id }}" name="choice" value="{{ choice.id }}">
<label for="{{ choice.id }}">{{ choice.choice_text }}</label><br>
{% endfor %}
<input type="submit" value="Vote">
</form>
</body>
</html>
Django에서 새 앱 만들기: 대체 방법
직접 앱 디렉터리 만들기
다음과 같이 앱 디렉터리를 직접 만들 수 있습니다.
mkdir myapp
그런 다음 앱 디렉터리에 models.py
, views.py
, admin.py
및 tests.py
와 같은 기본 파일을 만들 수 있습니다.
South를 사용하기
South는 Django 앱을 관리하는 데 도움이 되는 타사 도구입니다. South를 사용하여 새 앱을 만들 수 있습니다.
south myapp
South는 앱 디렉터리와 기본 파일을 만들고 앱을 프로젝트의 INSTALLED_APPS
설정에 추가합니다.
fab-project를 사용하기
fab-project는 Django 프로젝트 및 앱을 만드는 데 도움이 되는 또 다른 타사 도구입니다. fab-project를 사용하여 새 앱을 만들 수 있습니다.
fab app myapp
Django 관리 인터페이스를 사용하기
Django 관리 인터페이스를 사용하여 새 앱을 만들 수도 있습니다.
- Django 관리 인터페이스에 로그인합니다.
- "사이트 관리"를 클릭합니다.
- "앱"을 클릭합니다.
- "새로운 앱 추가"를 클릭합니다.
- 앱 이름을 입력하고 "앱 만들기"를 클릭합니다.
어떤 방법을 사용해야 할까요?
새 앱을 만드는 가장 좋은 방법은 프로젝트의 특정 요구 사항에 따라 다릅니다.
- 간단하고 빠른 방법을 원한다면
startapp
명령을 사용하십시오. - 앱 디렉터리의 구조를 더 많이 제어하고 싶다면 앱 디렉터리를 직접 만드십시오.
- South 또는 fab-project와 같은 도구를 사용하는 데 익숙하다면 이러한 도구 중 하나를 사용하십시오.
- Django 관리 인터페이스를 사용하는 데 익숙하다면 Django 관리 인터페이스를 사용하십시오.
참고:
- 위에 나열된 대체 방법 외에도 Django에서 새 앱을 만드는 데 사용할 수 있는 다른 방법이 있습니다.
python django