티스토리 뷰
반응형
정리
우리는 장고를 통해 서버를 만들고 있다.
서버는 요청이 들어오면 응답을 보내준다.
그리고 사용자는 url을 통해 요청을한다.
따라서
url 부터 만들고
수행하는 view를 만들고
반환해주는 html을 만든다.
그리고 templates에 html을 넣어서 보낸다.
django template language
장고 문법에 대해 알아보자.
실습 위주로 진행되니 쭉 따라오면서 정리할거 정리하면된다.
참고 사이트
https://docs.djangoproject.com/en/3.0/topics/http/shortcuts/
render에 대한 설명이다. 다른부분이 궁금하면 찾아보면 된다.
들어가보면 required arguments가 필수적으로 작성해야하는 부분이고 optional arguments 부분이 옵셔널 하게 작성해도되는 부분이다.
그리고 오른쪽 아래 부분보면 버전 변경 방법이 있다.
개발자라면 필수적으로 홈페이지를 참고해야한다.
실습하면서 이해해 보자.
첫번째, urls.py
- 이번엔 int 값에 id를 넣자
- 앞처럼 숫자 자체를 적으면 하나하나씩 다 적어줘야한다. 하지만 variable값인 id를 넣으면 그럴 필요가 없다.
두번째, views.py
- 내부의 keyword인자로 작동하기 때문에 url에 id로 지정했으면 view에서도 id를 해야한다.
- 변수를 4개 지정했다.
- user을 'hanpy'라고 지정하고 html부분(아래 사진)에서 if 조건문에 넣었다는 점을 기억하자. 그리고 hanpy말고 다른 값을 넣으면 if문에서 '관리자 권한이 없습니다'라고 뜬다.
- 지정한 변수 값들을 context 안에 넣어줘야 같이 넘어간다.
- context 안에 key값과 value 값을 같게 하는 이유는 views에서 넘어온 변수를 확인하기 위해서다.(편의상)
세번째, posts.html (templates안에 만드는거다.)
MTV에서 T는 html 문서가 있는 templates가 아니라, html을 만드는 템플릿 엔진이라고 생각하자. 다른거다.
- 주석은 {# #}으로 작성한다.
- 출력은 {{ }} 중괄호를 사용한다.
- {{ id }} 는 url 마지막에 있는 숫자가 들어간다.
- {{ content }} 는 내가 적은 글이 들어간다.
- |length 은 content의 글자수를 출력한다. (|은 filter를 의미한다.)
- |truncatechars:10 은 글자수를 10자까지만 출력한다.
- 반복문을 ul 태그에 감싸서 한다는 점을 주목하자.
- 인덱스랑 같이 쓰고 싶다면 ol 태그 써도 되지만 {{ forloop.counter }}를 사용한다.
- 만약 숫자를 0부터 시작하고 싶다면 {{ forloop.counter0 }}을 사용한다.
- 비어있는 배열을 보낸다면 {{ empty }}를 사용해서 구문을 출력가능하다.
- {{ empty }}의 예는 for 문으로 댓글을 출력 할 때, 댓글이 없는 경우 아래와 같이 사용가능하다.
{% for reply in replies %}
<p>댓글 {{ forloop.counter }} : {{ reply }} </p>
{% empty %}
<p>댓글을 작성해 주세요</p>
{% endfor %}
- 항상 for 문은 닫는 괄호를 지정해 준다. {% endfor %}
- 출력과 다르게 문법을 할 때는 {% %} 으로 사용한다.
- if 조건문을 확인하자.
- if 조건문의 종료도 {% endif %}
출력
- post 뒤에 3을 적었으니 3번째 글이라고 뜬거다.
사실 html의 중복되는 부분을 지우기 위해 base.html을 만드는 것을 알아보자.
반응형
'Web > Django' 카테고리의 다른 글
[Django]settings.py (0) | 2020.06.13 |
---|---|
6-2. [DTL] 템플릿 확장(base.html) (0) | 2020.05.06 |
5-2. django_variable routing 기초(int) (0) | 2020.05.03 |
5-1. django_variable routing 기초(str) (0) | 2020.05.01 |
4. django_간단한 문법실습 (0) | 2020.04.30 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- read_csv
- Vue
- mongoDB
- 클라우데라
- react
- nodejs
- pandas
- Deque
- login
- 자료구조
- next.config.js
- TensorFlow
- NextJS
- UserCreationForm
- Python
- django
- 자연어처리
- error:0308010C:digital envelope routines::unsupported
- Express
- JavaScript
- Queue
- vuejs
- nextjs autoFocus
- logout
- DFS
- useState
- typescript
- BFS
- useHistory 안됨
- react autoFocus
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함