본문 바로가기
Python 웹 프레임워크/Django 4.2

[Django4] 프로젝트 구조 및 코딩컨벤션

by cogito21_python 2024. 7. 3.
반응형

프로젝트 구조

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 %}

 

반응형

'Python 웹 프레임워크 > Django 4.2' 카테고리의 다른 글

[Django 4] 프레임워크 특징 및 소개  (0) 2024.07.03
[Django4] Django 버전별 특징  (1) 2024.07.01
[Django4] 목차  (0) 2024.07.01