티스토리 뷰

기술(Tech, IT)/웹(Web)

[Web] Django - 2

Daniel803 2024. 11. 8. 02:32

Django의 다목적성과 강력한 프레임워크는 단순한 웹사이트와 복잡한 데이터 기반 애플리케이션 모두에 널리 사용된다. Django에 대해 좀 더 자세히 알아보자.

 

  1. Architecture (MVT Pattern)
    1. Model
      : 데이터 구조를 정의한다. 데이터베이스 레이아웃을 나타내며 데이터베이스 상호 작용을 담당한다. 예를 들어, 데이터베이스 레코드 생성 및 업데이트는 모델을 통해 수행된다.
    2. View
      : 사용자 요청을 처리하고, 모델에서 데이터를 가져오고 일반적으로 HTML 웹 페이지 또는 JSON 으로 응답을 렌더링하는 비즈니스 로직 계층이다.
    3. Template
      : 프레젠테이션 계층이다. Django 템플릿 언어를 사용해 사용자의 브라우저로 전송되는 동적 HTML 콘텐츠를 만든다.
  2. Key Components
    1. Django ORM
      : 개발자가 SQL 쿼리 대신 Python 코드를 사용해 데이터베이스와 상호 작용할 수 있게 해준다. 이러한 추상화는 데이터 관리를 간소화하고 데이터베이스에 구애받지 않는 개발을 보장한다.
    2. Django Admin
      : 추가 코드 없이 애플리케이션의 데이터를 관리할 수 있도록 자동으로 생성되는 사용자 지정 가능한 관리자 인터페이스다.
    3. Django Middleware
      : View에 도달하기 전 또는 View가 요청을 처리한 후에 전역적으로 요청을 처리하는 구성 요소다. 로깅 요청, 사용자 인증, 세션 관리 등에 유용하다.
    4. Django Forms
      : 사용자 입력을 처리하고 쉽고 안전한 방식으로 유효성을 검사하는 방법을 제공한다.
    5. Django REST Framework (DRF)
      : 인증, 직렬화, 요청 처리와 같은 기능을 제공하는 Django로 RESTful API를 구축하기 위한 확장 기능이다.
  3. 예제
    1. Model Definition
      from django.db import models
      
      class BlogPost(models.Model):
          title = models.CharField(max_length=200)
          content = models.TextField()
          published_date = models.DateTimeField(auto_now_add=True)
          
          def __str__(self):
              return self.title
    2. View Function
      from django.shortcuts import render
      from .models import BlogPost
      
      def blog_list(request):
          posts = BlogPost.objects.all()
          return render(request, 'blog_list.html', {'posts': posts})
    3. Template (blog_list.html)
      <!DOCTYPE html>
      <html>
      <head>
          <title>Blog Posts</title>
      </head>
      <body>
          <h1>Blog Posts</h1>
          <ul>
              {% for post in posts %}
                  <li>{{ post.title }} - {{ post.published_date }}</li>
              {% endfor %}
          </ul>
      </body>
      </html>
    4. URL Configuration
      from django.urls import path
      from .views import blog_list
      
      urlpatterns = [
          path('', blog_list, name='blog_list'),
      ]
  4. Django의 강점
    1. Rapid Development
      : 관리자 인터페이스 및 ORM과 같은 기본 제공 기능을 통해 개발자는 앱을 빠르게 프로토타이핑하고 빌드할 수 있다.
    2. Scalable
      : 캐싱, 데이터베이스 최적화 및 클라우드 서비스를 사용해 트래픽이 많은 애플리케이션을 처리할 수 있도록 확장할 수 있다.
    3. Security
      : 일반적인 취약성으로부터 보호하고 기본적으로 모범 보안 사례를 따른다.
    4. Community Support
      : 활발하게 활동하는 대규모 커뮤니티에서 다양한 타사 패키지, 튜토리얼 및 지원을 제공한다.
  5. Typical Django Workflow
    1. django-admin startproject projectname 을 사용해 새 장고 프로젝트를 만든다.
    2. models.py 에서 Model을 생성해 앱의 데이터 구조를 정의한다.
    3. python manage.py makemigrationspython manage.py migrate 명령을 사용해 데이터베이스 테이블을 생성한다.
    4. views.py 에서 View를 생성해 요청을 처리하고 응답을 렌더링한다.
    5. urls.py 에서 URL을 보기에 매핑하기 위한 경로를 정의한다.
    6. 템플릿을 만들어 웹 페이지를 구성한다.
    7. python manage.py runserver 를 사용해 로컬에서 서버를 실행하여 애플리케이션을 테스트한다.
  • Django 사용 사례
    • Content Management Systems (CMS)
    • E-commers Platforms
    • Social Networking Sites
    • Scientific Computing Applications
    • RESTful Web Services and APIs
반응형

'기술(Tech, IT) > 웹(Web)' 카테고리의 다른 글

[Web] {{ form.as_p }}  (1) 2024.11.07
[Web] Django - 1  (0) 2024.11.07
[Web] HTML form 태그  (0) 2023.07.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
반응형