데브코스 TIL/Django, API

Django Tutorial Part 1

예니ㅣ 2023. 11. 6. 11:47

1. Django Project 생성하기

Django 설치 및 project 생성하기

python -m pip install Django
django-admin startproject mysite

 

manage.py 파일을 이용하여 django 서버를 조작할 수 있습니다.

python manage.py runserver

 

 

2. Django App 생성하기

polls 앱 생성하기

python manage.py startapp polls

 

sum_page 확인하기

 

polls 확인하기

mysite/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("polls/", include("polls.urls")),
    path("admin/", admin.site.urls),
]

 

polls/urls.py

from django.urls import path
from . import views     # 현재 앱의 views 가져오기

urlpatterns = [
    path("", views.index, name="index"),
]

 

polls/views.py

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world.")

 

 

3. URL 경로(path) 설정하기

polls/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('',views.index, name='index')
    path('some_url',views.some_url)
]

 

polls/views.py

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world.")

def some_url(request):
    return HttpResponse("Some ulr을 구현해 봤습니다.")

 

 

4. 모델 만들기

"마이그레이션"(migration)은 모델을 새롭게 작성하거나 수정한 경우, 변경 내용을 데이터베이스에 적용하는 작업 입니다.

 

mysite/settings.py

...
# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls.apps.PollsConfig',
]
...

 

polls/models.py

from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

 

migration 파일 생성하기

python manage.py makemigrations polls

 

migration으로 실행될 SQL 문장 살펴보기

python manage.py sqlmigrate polls 0001

 

migration 실행하기

python manage.py migrate

 

 

 

5. 장고의 다양한 모델 필드 활용하기

모델 필드 types

  • BooleanField
  • CharField
  • DateField
  • DateTimeField
  • FloatField
  • JSONField
  • TextField

 

polls/models.py

from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    #is_something = models.BooleanField(default=False)
    #average_score = models.FloatField(default=0.0)

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

 

Django에서 기본으로 제공하는 SQLite 데이터베이스 파일을 통해 확인하

sqlite3 db.sqlite3

sqlite> SELECT * FROM django_migrations;
sqlite> .schema polls_question

 

마이그레이션 0001버전으로 롤백하기

python manage.py migrate polls 0001

 

 

6. Django Admin - 관리자 계정 생성하고 접속하기

"CRUD"는 Create, Read, Update, Delete를 말합니다.

 

관리자 계정 생성하기

python manage.py createsuperuser

관리자계정 로그인 화면 생성

 

 

6. Django Admin - 모델 등록하기

polls/admin.py

from django.contrib import admin
from .models import *

admin.site.register(Question)
admin.site.register(Choice)

 

polls/models.py

from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    score = models.FloatField(default=0)
    is_something_wrong = models.BooleanField(default=False)
    json_field = models.JSONField(default=dict)
    
    def __str__(self):
        return f'제목: {self.question_text}, 날짜: {self.pub_date}'
        
class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'데브코스 TIL > Django, API' 카테고리의 다른 글

Django REST Framework Part 2  (0) 2023.11.06
Django REST Framework Part 1  (0) 2023.11.06
Django Tutorial Part 4  (0) 2023.11.06
Django Tutorial Part 3  (0) 2023.11.06
Django Tutorial Part 2  (0) 2023.11.06