Django/기초

[Django] 장고입문 5. model, 웹 화면(html, 프론트)에 출력하기, 뿌리기

민돌v 2021. 6. 13. 23:15

django model을 명시해주었다면, 이제 이 모델을 이용하여

Web 화면에 출력을 할 수 있다.

(순서)

1. models.py 정의

2. views.py 함수 작성

3. urls.py 연결

4. html에 템플릿 변수로 데이터 불러오기

1. views.py 작성 ( QuerySet 과 템플릿 변수)

앞에서 정의한 Designer Model을 이용한다.

1. 먼저 views.py 안에 models.py를 import 해준다.

2. 함수 안에 모델 객체를 불러올 변수를 선언한다. (designer)

3. designer = models.Designer.objects.all() 의 뜻은, designer 변수 안에

Designers 모델의 모든 객체 정보를 담겠다는 의미이다.

4. 7번째줄의 { 'designer' : designer } 의 의미는, 'designer'라는 변수이름을 'home.html'에 return 해줄건데 그안에 designer 변수의 값을 담아서 보낸다는 의미이다.

5. 이제 'home.html' 에서는 'designer' 라는 이름을 통해서 models.Designer.objects.all()에 접근할 수 있다.

2. QuerySet (쿼리셋)

designer 변수를 출력해보면 그 값은 QuerySet 형태로 출력이 된다.

그렇다면 쿼리셋이란 무엇일까.

QuerySet은 데이터베이스에서 "전달 받은 객체의 목록"이며 Django ORM에서 발생한 자료형이다.

이 쿼리셋 메소드를 이용하여서 데이터베이스의 수많은 객체를 일일이 반환하지 않고 한번에 변수에 넘겨줄수 있는 것이다.

<쿼리셋 메소드 종류>

1. objects.all()

: 테이블 데이터의 모든 데이터를 가지고 온다.

2. objects.values()

: 쿼리셋의 내용을 딕셔너리형태로 각 객체정보를 가지는 리스트 형태로 반환한다.

3. objects.filter()

: 테이블데이터 중에 특정 조건에 맞는 행들을 반환한다.

ex) Designer.objects.filter(name = '홍길동')

4. objects.exclude()

: 특정 조건을 제외한 행들을 반환한다.

5. objects.get()

: 하나의 행만을 가지고 온다.

- .get() 은 쿼리셋이 아닌 모델 객체를 반환하는 메소드이다.

- 특정 조건에 맞는 칼럼을 반환한다.

- filter()get()의 차이점은 반환하는 값이 없을 때

1) fiter()는 빈 쿼리셋을 반환하고

2) get()은 DoesNotExist라는 메시지를 띄운다

6. objects.count()

: 데이터 테이블의 행의 개수(데이터의 개수)를 반환한다.

7. first(), last()

: 첫번째와 마지막 데이터를 반환한다.

3. 장고에서 이미지 불러오기

장고에서 이미지를 업러도 후 출력하기 위해서는 몆가지 설정을 해주어야한다.

1) settings.py 에서 media 설정

- 이거는 전 게시물에서 했으니 pass

2) 프로젝트 폴더 urls.py 추가

app 폴더의 url이 아닌 project 폴더의 url에 추가를 해주어야한다.

image를 url로 열기때문에 해당열을 추가해 주어야한다. -> 자세한 사항은 요깅(장고 서빙)

https://dbza.tistory.com/entry/6-%EC%9B%B9-%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EA%B8%B0%EC%B4%88-%EB%B0%8F-%EC%9E%A5%EA%B3%A0-static

 

6. 웹 프론트엔드 기초 및 장고 static

DRF-React Study Chapter 4. 웹 프론트엔드 기초 및 장고 static JavaScript와 jQuery Ajax GET/POST 요청 브라우저의 동일 도메인 참조 정책(Same-Origin Policy) 여러 도메인에 걸쳐서 구성되는 웹서비스가 늘어..

dbza.tistory.com

 

4. 템플릿 변수

html 코드에서 장고의 데이터를 호츨하거나 논리적인 문법을 사용하고 싶을 때 템플릿 문법을 이용한다.

1)템플릿 변수

{{ }} : 띄어쓰기 필수

2) 템플릿 태그

{% %} : 논리적인 문법 사용

- 끝에 {% end~ %} 필수

3) 템플릿 필터

{{ ~~ | ~~ }} : 템플릿 변수의 값을 특정 형식으로 변환할 때 사용

4) 템플릿 코멘트(장고 주석)

1. {# #} : 한줄

2. {% comment %} : 여러줄

{% endcomment %}

(출력화면)