이상이 아닌 현실 💼/Web 💻

Django 프로젝트 시작하기

sroa.chin 2020. 9. 14. 21:30

1.  $ pip uninstall django

2.  $ pip install django==2.1.15

원래 설치되어있던 3.1.1 버전 지우고 2.1.15 버전으로 재설치

 

3.  $ django-admin startproject api

4.  $ cd api

api 프로젝트 시작api 폴더로 이동

 

5.  $ python manage.py startapp board

명령어 입력 후, 좌측의 board 폴더와 여러 py 파일이 생성된다. 이 중 models.py에 사용하고자하는 데이터 클래스를 우측과 같이 입력해준다.

 

다음으로는 위에서 만들었던 api 프로젝트 밑 settings.py를 열어 

ALLOWED_HOSTS = ['*'] 로 고쳐준다. ([]에서 ['*']로)

 

33번째 줄의 INSTALLED_APPS에 board를 추가해준다.

 

6.  $ python manage.py makemigrations

실행하여 manage.py에 생성한 클래스 board를 생성한다.

 

7.  $ python manage.py migrate

데이터 베이스에 반영한다. 

 

반영 후 api의 urls.py의 urlpatterns에 board에 대한 내용을 추가해준다.

 

8.  $ pip install faker

데이터베이스에 값을 넣기 위해 faker 설치

 

9.  $ pip install django_extensions 

django_extentions 설치

 

10. $ python manage.py shell_plus

Faker를 통해 board클래스 안 더미 데이터를 넣고 싶다.

Faker를 선언해주고 .name(), .text() 등과 같은 함수를 써주면 dummy data가 출력된다.

 

 

from django.db import models
from faker import Faker

f = Faker()

# Create your models here.
class notice(models.Model): 
    id = models.IntegerField(primary_key=True)
    title = models.CharField(max_length=100)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    email = models.CharField(max_length=30)

    @classmethod
    def dummy(cls, n):
        for _ in range(n):
            cls.objects.create(
                title=f.name(),
                content=f.text()
            )

위에서 만든 notice 클래스에서 dummy 라는 클래스 메서드를 만들어주기 위해 @classmethod 부분을 추가했다. 다시 shell_plus를 껐다가 (끄는 단축키 Ctrl+d) 켜줘서 notice.dummy(만들고싶은 더미 데이터 수)를 실행해준다.