TIL no.48 - Django - Basic - 12 - Data 생성

박준규·2019년 10월 20일
0

Django

목록 보기
16/30

Django - Basic - 10에서 Model을 정의해줬습니다.
이제 그 Model을 가지고 실제로 DB에 data들을 저장하고 읽어보겠습니다.

1. Database에 data 저장하기

Django Shell을 실행합니다.

$ python manage.py shell

Django Shell을 이용하면 shell에서 바로 Django 명령어를 사용해서 data를 다룰 수 있습니다.

shell을 이용해 Post라는 Model의 record 하나를 만들어 보겠습니다.

> from second.models import Post
> post = Post.objects.create(title='this is title', content='this is content')
> post.save()

위와 같은 과정을 반복해 record를 7개까지 만들어보겠습니다.

> posts = Post.objects.all()
> posts
> <QuerySet [<Post: Post object (1)>, <Post: Post object (2)>, <Post: Post object (3)>, <Post: Post object (4)>, <Post: Post object (5)>, <Post: Post object (6)>, <Post: Post object (7)>]>

QuerySet이란 개념이 나왔는데 이는 지금 설명하지 않고 넘어가겠습니다.
중요한 것은 배열처럼 접근이 가능하다는 것입니다.

그러므로 다음과 같이 각 record의 정보를 확인할 수 있습니다.

> posts[0].title
> 'this is title'

이렇게 DB에 저장한 data를 가지고 무언가 일을 해보겠습니다.

2.

#second/views.py
from django.shortcuts import render
from second.models import Post


def list(request):
    context = {
        'items': Post.objects.all()
    }
    return render(request, 'second/list.html', context)
#second/templates/second/list.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>Second</title>
</head>
<body>
    {% for item in items %}
    <div>
        <h4>{{ item.title }}</h4>
        <p>
            {{ item.content }}
        </p>
    </div>
    {% endfor %}
</body>
</html>

views.py에서 Post Model의 모든 record들을 받아서 items이라는 key에 저장했습니다. 그리고 list.html에 이 정보를 같이 넘겨줬습니다.

이제 list.html을 보면 items에 있는 각 record들에 관해 for문을 돌리고

태그에는 title에 담겨있는 필드를

태그에는 content에 담겨있는 필드를 넣어줍니다. 마지막으로 url mapping을 해줍니다. ``` #second/urls.py from django.urls import path from . import views urlpatterns = [ path('list/', views.list, name='list') ] ``` 이제 runserver를 해서 결과를 보겠습니다. ![스크린샷, 2019-10-20 20-28-58.png](https://velog.velcdn.com/post-images%2Fdevzunky%2Fd85d6220-f32c-11e9-a492-4d11faea8aa3%2F%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7-2019-10-20-20-28-58.png) *** 구현한 화면은 매우 단순하지만 Model을 정의하고 record를 생성하고 record를 읽어서 화면에 어떻게 보이게 할지 결정했습니다.

profile
devzunky@gmail.com

0개의 댓글