python manage.py runserver
python manage.py startapp polls:manage.py에 polls라는 앱을 생성함

from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world.")
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path("admin/", admin.site.urls),
path("polls/", include('polls.urls'))
]
from django.urls import path
from . import views
urlpatterns = [
path('',views.index, name='index')
]
django 패키지를 깔았는데 visual studio code에서는 안 깔았다고 뜸
인터프리터 변경(recommended, 가상환경의 파이썬 버전과 맞게)->실패
기존에 열려있던 파일을 모두 닫고, open new file을 통해 새로운 창을 띄워줌.->해결
잘 깔아짐..
VS Code의 인터프리터가 이 가상환경으로 설정되지 않았다면 터미널에서 설치된 django가 해당 환경에서 인식되지 않는다.
왜 잘 깔아졌을까?
터미널에서 설치했을 때 성공한 이유는 터미널이 올바른 가상환경을 사용했기 때문이다.
VS Code는 터미널과 인터프리터가 별도로 동작하므로 터미널에서 실행한 pip install은 가상환경에 직접 django를 설치할 수 있었다.
설치 후 가상환경에 django가 추가되었으므로 VS Code에서도 이를 인식하게 되었을 가능성이 크다.
마이그레이션의 역할
1. 모델 -> 데이터베이스 변환
2. 변경 사항 추적
3. 동기화
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)
python manage.py makemigrations polls이 명령은
polls앱의 데이터베이스 변경 사항을 기술한 마이그레이션 파일을 migrations/ 디렉터리에 생성합니다.
python manage.py sqlmigrate polls 0001이 명령은 migration으로 실행될 SQL 문장을 미리 보는 명령어입니다.
python manage.py migrate이 명령은 데이터베이스를 업데이트하여 변경 사항을 반영합니다.
마이그레이션 파일은 각 앱의 migrations 디렉터리에 생성되며, 데이터베이스 변경 사항을 설명하는 Python 코드가 포함됩니다.
https://docs.djangoproject.com/en/5.1/
polls/admin.py에 모델을 등록합니다.from django.contrib import admin
from .models import *
#Register your models here
admin.site.register(Question)
admin.site.register(Choice)
필드 종류
BooleanFieldCharFieldDateTimeFieldFloatFieldJSONField
polls/models.py의 Question모델의 필드를 수정합니다.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): # question행의 제목 지정
return f'제목: {self.question_text}, 날짜: {self.pub_date}'
- 마이그레이션 파일을 생성합니다.
$ python manage.py makemigrations
- 마이그레이션 파일을 데이터베이스에 적용합니다.
$ python manage.py migrate
- 마이그레이션을 이전 버전으로 되돌립니다.
$ python manage.py migrate polls 0001
models.py에서 0001버전에 없는 필드를 제거합니다.class Question(models.Model):
question_text = models.CharField(max_length = 200)
pub_date = models.DateTimeField('date published')