인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

meyou1218님의 프로필 이미지
meyou1218

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

04-13 Song 모델에 slug 지원 추가하기

이번 강의에서는 SONG이라는 sqlite3 데이터베이스를 import 하지 않았는데 데이터가 혹시 어디서 불러진 건가요???

작성

·

148

0

model.py를 보면 Song클래스가 정의되었는데 데이터가 어디서 불러와 졌는지를 잘 모르겠습니다ㅠ 도움 부탁드립니다.

from __future__ import annotations
from datetime import date
from typing import Dict
from urllib.parse import quote
from django.db import models
from django.utils.html import format_html


# 파이썬 3.7부터 지원
# @dataclass
class Song(models.Model):  # 장고 모델 아니고 일반 파이썬 클래스!
    melon_uid = models.CharField(max_length=20, unique=True)
    rank = models.PositiveSmallIntegerField()
    album_name = models.CharField(max_length=100)
    name = models.CharField(max_length=100)
    artist_name = models.CharField(max_length=100)
    cover_url = models.URLField()
    lyrics = models.TextField()
    genre = models.CharField(max_length=100)
    release_date = models.DateField()
    like_count = models.PositiveIntegerField()

    @property
    def cover_image_tag(self):
        return format_html('<img src="{}" style="width: 50px;">', self.cover_url)

    @property
    def melon_detail_url(self) -> str:
        melon_uid = quote(self.melon_uid)
        return f"https://www.melon.com/song/detail.htm?songId={melon_uid}"

    @property
    def youtube_search_url(self) -> str:
        search_query = quote(f"{self.name}, {self.artist_name}")
        return f"https://www.youtube.com/results?search_query={search_query}"

    @classmethod
    def from_dict(cls, data: Dict) -> Song:
        return cls(
            melon_uid=data.get("곡일련번호"),
            rank=int(data.get("순위")),
            album_name=data.get("앨범"),
            name=data.get("곡명"),
            artist_name=data.get("가수"),
            cover_url=data.get("커버이미지_주소"),
            lyrics=data.get("가사"),
            genre=data.get("장르"),
            release_date=date.fromisoformat(data.get("발매일")),
            like_count=int(data.get("좋아요")),
        )

답변 1

0

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

db.sqlite3 데이터베이스는 settings 의 DATABASES 설정을 통해, 디폴트 데이터베이스로서 그 경로가 지정되어있습니다.

image

장고 모델을 사용한 쿼리셋 등을 통해 SQL 쿼리를 자동 생성/수행하구요. 이때 장고에서 디폴트 데이터베이스로 자동으로 연결을 맺습니다.

meyou1218님의 프로필 이미지
meyou1218
질문자

아하 감사합니다~!

meyou1218님의 프로필 이미지
meyou1218

작성한 질문수

질문하기