Development/Django(멋쟁이사자처럼 7기 운영진)

[멋사7기] 3주차 - 2. model&admin 이론, 실습 / 3. queryset & method

안다희 2019. 1. 24. 15:56
728x90

https://www.notion.so/likelion/Django-BASIC-0-2-Cheat-sheet-860d16d212c74701a9a9ccfad02e1cbd


선행지식 : python class


mtv 중 model에 해당하는 것을 배움!


요약

1. Models.py 안에 어떤 종류의 데이터를 처리할지 class로 정의

2. DB에게 알아듣게끔 하기 (makemigrations, migrate)

3. Admin 계정 만들기 (admin,py에 활용할 데이터 등록)


한줄요약

데이터베이스에 어떻게 생긴 데이터를 넣을지 정의하고, 거기에 admin 권한으로 데이터 집어넣기 (=글쓰기)



https://coding-dahee.tistory.com/13?category=732277 참고

  1. project를 만들고,
  2. app을 만들고,
  3. project에 app을 연결하고,

까지 하고 모델을 만들거다!


1) [models.py]

class Blog(models.Model):
title = models.CharField(max_length = 200)
pub_date = models.DateTimeField('data published')
body = models.TextField()

def __str__(self):
return self.title # 이거는 장고 db볼 때 타이틀이 보이게 하는 것 원래는 ~~object(1)으로 보임


2) python manage.py makemigrations

3) python manage.py migrate


4) python manage.py runserver

/admin 들어가면 admin 계정을 생성해야 함


admin 계정 생성

5) python manage.py createsuperuser

-> name, email, pw 입력




그리고 서버 켜고 /admin에서 로그인!

글 하나 만들면 ok!


근데 Blog가 없다!?


6)

[admin.py]

from .models import Blog

admin.site.register(Blog)
=> Blog class 추가 한 것임. 이제서야 admin에 Blog가 보일 것임.


db에 데이터를 넣을 수 있다!!!><


======================

이제는 이 model을 보여줄 것이다 화면에!!!


어떻게 데이터를 가져올 것인가???

template으로 바로 옮길 수 없다. views.py에서 거쳐서 template에서 보여줄 수 있겠지!


1)

[views.py]

from .models import Blog

def home(request):
blogs = Blog.objects # 쿼리셋 # 메소드
return render(request, 'home.html', {'blogs': blogs})


=> 모델로부터 객체 목록을 blogs에서 전달 받을 수 있음 이 객체를  : 쿼리셋

=> 이 쿼리셋을 기능화, 정렬화 시키는게 : 메소드


https://coding-dahee.tistory.com/32 오류나면 이거보기


2) app 안에 templates폴더, home.html 파일 만들고

[home.html]

{{blogs}}


3) urls.py

import blog.views

urlpatterns = [
path('admin/', admin.site.urls),
path('', blog.views.home, name="home"),
]



서버 돌리면

엥!?!?!?!


객체 그대로 사용해서 그래



다시

4)

쿼리셋을 활용할 수 있게 해주는게 메소드!

.all() 블로그(blog)로 만든 모든 쿼리셋 가져와라.

.count()

.last()

.first()


[home.html]

{{blogs.all()} ???


암튼!!! [home.html]

{% for blog in blogs.all %}
<h1> {{blog.title}} </h1>
<p> {{blog.pub_date}} </p>
<p> {{blog.body}} </p>
<br><br>
{% endfor %}


그럼 잘 보인당



^^

출처: https://mingos-habitat.tistory.com/34 [밍고의서식지:티스토리]