[Django]장고 공식튜토리얼 따라하기-Part1&Part2

Cherry·2022년 1월 14일
0
post-thumbnail
post-custom-banner

드디어 내 첫 포스트!! 이제까지 계속 올려야지 올려야지 했는데 바빠서(핑계지만.,,,) 못했다.. 이제는 주 2일 포스팅 실현해보겠다! 저번 여름에는 스프링을 공부했었는데 확실히 초보자에게는 너무나 어려운 프레임워크였다ㅜㅜ나중에 더 제대로 공부해보고 싶다 어쨌든 이번에 합격한 동아리에서 장고를 사용해서 장고에 대해서 공부하기 시작했다. 먼저 장고에서 만든 튜토리얼을 파트 4까지 따라해보면서 장고가 어떻게 작동되는지 어떤 프레임워크인지에 대해 배워보았다 그중에서 중요해보이는 부분들을 간단히 정리해 보았다!

Part 1

1. 프로젝트 및 앱 생성

$ django-admin startproject mysite #프로젝트 생성
$ python manage.py runserver #개발 서버 실행
$ python manage.py startapp polls #설문조사 앱 생성

2. view 작성

#polls/views.py
from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")
  • view를 호출하려면 연결된 URL이 필요하므로 URLconf를 생성하여 polls에 urls.py 생성한다
#polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
]
  • 최상위 URLconf 에서 polls.urls 모듈을 바라보게 설정
#mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]
  • include() 함수는 다른 URLconf들을 참조할 수 있도록 도와주며 Django가 함수 include() 를 만나게 되면, URL의 그 시점까지 일치하는 부분을 잘라내고, 남은 문자열 부분을 후속 처리를 위해 include 된 URLconf로 전달한다

Part 2

1. 모델

  • 모델이란 부가적인 메타데이터를 가진 데이터베이스의 구조이다
  • 데이터베이스의 각 필드는 Field 클래스의 인스턴스로서 표현되며 각 필드가 어떤 자료형을 가질 수 있는지를 Django 에게 말해준다.

2. migration

  • makemigrations은 모델의 변경사항을 migration으로 저장시키고 싶다는 것을 Django에게 알려준다
$ python manage.py makemigrations polls
  • migrate 명령은 아직 적용되지 않은 migration을 모두 수집해 이를 실행하며 모델에서의 변경 사항들과 데이터베이스의 스키마의 동기화가 이루어집니다.
$ python manage.py migrate

3. 모델 생성

  • Question model
class Question(models.Model):
    question_text = models.CharField(max_length=200) #CharField => 문자(character) 필드
    pub_date = models.DateTimeField('date published') # DateTimeField => 날짜와 시간(datetime) 필드 
    def __str__(self):
        return self.question_text
    def was_published_recently(self): #시간 관련 커스텀 메소드
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
  • Choice model
class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)
    def __str__(self): #객체를 표현하는 메소드
        return self.choice_text
post-custom-banner

0개의 댓글