프로젝트 구조
myproject/
manage.py
myproject/
__init__.py
settings.py
urls.py
wsgi.py
app1/
migrations/
__init__.py
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
app2/
migrations/
__init__.py
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
...
주요 파일 설명
manage.py: Django 프로젝트를 관리하기 위한 커맨드라인 유틸리티
myproject/: 프로젝트의 설정 파일들이 포함된 디렉터리
- init.py: 해당 디렉터리를 파이썬 패키지로 인식하게 함
- settings.py: Django 프로젝트의 설정 파일
- urls.py: URL 설정 파일. 프로젝트 내의 URL 패턴과 뷰의 매핑을 정의
- wsgi.py: WSGI 호환 웹 서버를 위한 진입점
app1/: 각각의 Django 애플리케이션 디렉터리
- migrations/: 데이터베이스 마이그레이션 파일들
- admin.py: Django 관리자 사이트에 애플리케이션을 등록
- apps.py: 애플리케이션의 설정
- models.py: 데이터베이스 모델 정의
- tests.py: 애플리케이션의 테스트 코드
- views.py: 애플리케이션의 뷰 함수 및 클래스
코딩 컨벤션
일반적인 Python 스타일
- 기존의 pep8과 동일
Django-specific 스타일
model
- 모델 클래스는 항상 models.Model을 상속받습니다.
- 각 필드는 적절한 필드 클래스를 사용합니다 (models.CharField, models.DateField 등).
- __str__ 메서드를 정의하여 객체의 문자열 표현을 제공합니다.
class MyModel(models.Model):
name = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
view
- 함수 기반 뷰를 작성할 때는 가능한 한 단순하고 명확하게 작성합니다.
- 클래스 기반 뷰를 사용할 때는 Django가 제공하는 제네릭 뷰를 적극 활용합니다.
from django.http import HttpResponse
from django.views import View
def my_function_view(request):
return HttpResponse("Hello, World!")
class MyClassView(View):
def get(self, request):
return HttpResponse("Hello, World!")
template
- 템플릿 파일은 HTML 파일로, 템플릿 언어(Django Template Language, DTL)를 사용합니다.
- 템플릿 태그와 필터를 사용하여 데이터를 표시합니다.
- 코드 복잡도를 줄이기 위해 템플릿 상속을 활용합니다.
<!-- base.html -->
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}My Site{% endblock %}</title>
</head>
<body>
<header>
<h1>My Site</h1>
</header>
<main>
{% block content %}{% endblock %}
</main>
</body>
</html>
<!-- home.html -->
{% extends "base.html" %}
{% block title %}Home{% endblock %}
{% block content %}
<p>Welcome to the home page!</p>
{% endblock %}
'웹 개발 프레임워크 > Django 4.2' 카테고리의 다른 글
[Django 4] 프레임워크 특징 및 소개 (0) | 2024.07.03 |
---|---|
[Django4] Django 버전별 특징 (1) | 2024.07.01 |
[Django4] 목차 (0) | 2024.07.01 |