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 |