본문 바로가기
Python-django

Django 모델

by 코딩하는 욤욤이 2024. 1. 25.
반응형

이번 포스팅에서는 django의 모델에 대해 배워보겠습니다.

모델은 우리 데이터베이스에 연결되어 있습니다. 또한 모델에는 데이터베이스에 저장하려는 데이터의 필드와 동작이 포함되어 있다고 말할 수도 있습니다. 일반적으로 각 모델은 데이터베이스의 단일 테이블에 연결됩니다.

모델과 향후 주제를 더 쉽게 이해합니다. 새로운 프로젝트를 만들어 보겠습니다. 우리는 다음과 같은 웹사이트를 만들 것입니다:

장고 모델


위 그림에는 과거에 수행했던 일부 작업을 표시할 웹 페이지(홈페이지)가 있습니다. 일반적으로 각 작업 블록에는 그림과 일부 세부 정보가 포함됩니다. 사진과 세부 정보가 데이터베이스에서 선택되어 웹사이트가 동적으로 만들어집니다.

시작하려면 새 프로젝트를 만듭니다(저는 my_project 로 만들고 있습니다 ).

먼저 모든 작업에 대한 앱을 만들 것이므로 다른 프로젝트에서 해당 작업을 표시하려면 해당 앱을 다른 프로젝트로 이동할 수 있습니다( 이전 포스팅에서 본 것처럼 ).

아래 명령을 사용하여 jobs 라는 앱을 만들었다고 가정해 보겠습니다 . 명령 프롬프트를 열고 프로젝트 폴더로 이동한 후 다음을 입력합니다.

python Manage.py startapp 작업

그리고 프로젝트 폴더의 settings.py 파일 에 새로 생성된 앱의 경로를 추가하는 것을 잊지 마세요 . (이를 수행하려면 앱 작업 ​​문서를 따르세요 ).

참고: Linux에서 Python 3에는 python3을 사용하세요.

jobs 라는 이름의 프로젝트와 앱을 만들었기를 바랍니다 .

프로젝트 폴더의 모습은 다음과 같습니다.

장고 모델


앱을 만든 후 models.py라는 이름의 자동 생성된 파일이 있는 것을 볼 수 있습니다 . 각 앱에는 별도의 모델 파일이 있습니다. 따라서 해당 모델 파일에서 데이터베이스로 작업할 수 있습니다.

Django에서 모델 만들기


데이터베이스에서 정보를 저장하거나 검색하기 위한 모델을 생성하려면 원하는 이름으로 새 클래스를 생성하고 모델 클래스를 상속합니다. 이제 해당 모델 파일을 열고 아래와 같이 편집합니다.

from django.db import models
 
# Create your models here.
 
class Job(models.Model):
    #for image
    image = models.ImageField(upload_to='images/')
    #for details
    summary  = models.CharField(max_length=200)


여기서는 models.py 파일 내에 클래스를 생성합니다 . ImageField를 사용하여 작업에 대한 이미지를 저장하고 CharField를 사용하여 특정 작업의 요약이나 세부 정보를 저장합니다. ImageField 내에서 upload_to='images/'   속성은 이미지가 저장될 디렉터리를 나타내고 max_length=200 속성은 요약 이라는 이름의 CharField 내에 최대 200개를 저장할 수 있음을 나타냅니다 .

Django 프로젝트에 새 모델을 추가했다고 알리기


모델을 만든 후에는 프로젝트에서 무언가를 변경해야 합니다. 그러면 프로젝트에서 사용할 새 모델이 있다는 것을 알게 됩니다.

이 작업을 수행하기 전에 아래와 같이 서버를 실행하는 동안 몇 가지 경고를 발견했을 수 있습니다.

장고 모델


앱에 적용되지 않은 마이그레이션이 15개 있는 것으로 표시됩니다. 경고에서는 이러한 마이그레이션을 적용하는 방법도 보여줍니다.

따라서 서버를 중지하고 아래 명령을 입력한 후 서버를 다시 시작하십시오.

python manage.py 마이그레이션

다시 시작한 후에는 이제 경고가 표시되는 것을 볼 수 있습니다.

장고 모델


마이그레이션이 완료되었습니다.

모델을 추가하기 전에 해야 할 또 다른 일은 프로젝트 폴더의 settings.py 파일에 무언가를 추가하는 것입니다.

장고 모델

 

MEDIA_ROOT 및 MEDIA_URL 을 추가했습니다 .

여기서 MEDIA_ROOT는 누군가가 일종의 정보(이미지, 비디오 등)를 저장하려는 경우 media 폴더 내에 저장되어야 함을 보여 줍니다 .

그리고 MEDIA_URL은 누군가가 해당 이미지에 대한 액세스 권한을 얻으려고 하는지 여부를 보여줍니다.

하지만 Job 이라는 새로운 모델을 추가했다는 생각은 아직 없습니다 . 이를 알려면 터미널을 열고 다음을 입력하십시오.

python manage.py makemigrations

장고 모델


그런 다음 아래에 다른 명령을 입력하십시오.

python manage.py 마이그레이션

장고 모델


이제 최신 상태이므로 마이그레이션할 것이 없습니다.

그것이 모델에 관한 전부입니다. 우리는 모두 데이터베이스 작업을 할 준비가 되었습니다. 기본적으로 sqlite3 데이터베이스가 사용됩니다. 모델 사용의 장점은 나중에 데이터베이스를 변경하려는 경우 models.py 파일을 변경하지 않고도 쉽게 변경할 수 있다는 것입니다. 모든 데이터베이스에 대해 동일하게 유지됩니다.

다음 포스팅에서는 이 모듈을 사용하여 데이터베이스에 이미지와 요약(텍스트)을 업로드하는 방법에 대해 알아 보겠습니다

반응형