본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

Personal/SK 네트웍스 AI 캠프

SK 네트웍스 AI 캠프 - 4_AI 활용 애플리케이션 개발 - Day57 Django 기반 웹 서버 개발 기초

선행했다. 

https://standout.tistory.com/1943

 

Do it! 장고+부트스트랩 파이썬 웹 개발의 정석 - 첫째마당 웹 개발 기초 다지기

직접사용하고 운영할 수 있는 블로그를 개발하고 실제로배포하는 것을 목표로 글쓰기 권한, 소셜 로그인, 보안 등의 필요한 기능을 구현한다. Django파이썬 웹 프레임워크, 자바는 jsp, spring같은

standout.tistory.com

https://standout.tistory.com/1944

 

Do it! 장고+부트스트랩 파이썬 웹 개발의 정석 - 둘째마당 블로그 웹 사이트 만들기

MTV 패턴Model 모델로 자료의 형태를 정의하고View 어떤 자료를 어떤 동작으로 보여줄지Template 템플릿으로 웹페이지에서 출력할 모습을 정의 깃세팅 - 가상환경세팅 - 가상환경실행 - pip install django

standout.tistory.com

 

 

MVT Model View Template 구조

Model 데이터와 데이터베이스 처리

View 요청 처리 및 비즈니스 로직

Template html 화면표현

URLconf url과 view의 연결

 

 

Django ORM

SQL을 직접 작성하지않고 Pytho 객체를 이용해 데이터베이스를 처리

.objects.get(id=1), .objects.all(), .objects.create(), objects.filter(writer="홍길동")

 

Django 프로젝트 기본구조

manage.py Django 프로젝트 관리 명령 실행

settings.py 프로젝트 전체 환경설정

urls.py url 설정

models.py 데이터베이스 model

views.py 요청처리

admin.py 관리자 사이트 설정

apps.py app 설정

tests.py 테스트 코드 

migrations/ db 변경 이력 관리

templates/ html 템플릿.

 

pip install django

django-admin startproject 프로젝트 이름

cd 프로젝트 디렉터리로 이동

python manage.py runserver

http://127.0.0.1:8000/

 

변경사항 실제 데이터 베이스에 적용

python manage.py makemigrations, python manage.py migrate

 

관리자 기능

python manage.py createuperuser

python manage.py runserver

http://127.0.0.1:8000/admin/

Model을 관리자 페이지에서 사용하려면 admin.py에 from.models import Board, admin.site.register(Board) 등으로 등록. 

 

 

웹 사이트의 백엔드 기능 전체를 하나의 프레임워크에서 체계적으로 구성하려면 Django 가 편리하고 AI 모델 추론 API, LLM API, 마이크로서비스처럼 API 중심으로 개발하는 경우 FastAPI 가 특히 편리하다.

https://standout.tistory.com/1881

 

FastAPI란? Python으로 REST API와 웹 백엔드 서버 개발하기

FastAPIPython으로 REST API와 웹 백엔드 서버를 매우 쉬고 빠르게 개발 할 수 있도록 만들어진 고성능 웹프레임워크클라이언트 요청을 받아 데이터처리를 하며 결과를 JSON으로 응답한다. 백엔드 API

standout.tistory.com

 

 

Django Model Field

models.CharField(max_length=100)
STATUS_CHOICES = [
    ("draft", "작성중"),
    ("published", "게시"),
]
status = models.CharField(
    "카테고리명", # verbose_name="카테고리명"
    max_length=20,
    choices=STATUS_CHOICES,
    default="draft"
)

models.TextField()
models.IntegerField()
models.PositiveIntegerField() #0이상의 정수
models.PositiveSmallIntegerField() #작은 범위의 0 이상 정수, 별점과 같은.
models.FloatField()
models.BooleanField(default=False)
models.DateField()
models.DateTimeField()
slug = models.SlugField(unique=True)
author = models.ForeignKey( # 다대일
    settings.AUTH_USER_MODEL,
    null=True, # NULL을 허용
    blank=True, # 빈 값을 허용
    unique=True,
    on_delete=models.CASCADE, # SET_NULL, PROTECT, SET_DEFAULT
    related_name="posts"
)
user.posts.all()

profile = models.OneToOneField( # 1:1
    User,
    on_delete=models.CASCADE
)
tags = models.ManyToManyField(Tag) # 다대다
# settings.AUTH_USER_MODEL, Field가 아닌 현재 프로젝트에서 사용하는 User 모델
from django.conf import settings
author = models.ForeignKey(
    settings.AUTH_USER_MODEL,
    on_delete=models.CASCADE
)
from django.contrib.auth import get_user_model
User = get_user_model()

# AbstractUser, user 모델을 커스터마이징할때 사용하는 추상 클래스
from django.contrib.auth.models import AbstractBaseUser
class User(AbstractUser):
    nickname = ...
class Category(models.Model):
    name = models.CharField(max_length=100)

    class Meta:
        verbose_name = "카테고리"
        verbose_name_plural = "카테고리"
        # ordering = ["-created_at"] # 이상한 복수형 대신 원하는 이름을 사용