{% for book in books %}
<li>{{book}}</li>
{% endfor %}
목차
- Python-조건문
- django(7~10)
Python-조건문
- 조건문의 기본 개념
- if: 조건이 True이면 코드블록을 실행한다.
- elif: 앞의 조건이 거짓이라면 다음 조건을 검사
- else: 위의 모든 조건이 거짓일 때 실행
- if 문
if 조건식:
위 조건이 참일 때 실행할 코드
elif 조건식:
if가 거짓이고 elif가 참일 때 실행할 코드
else:
위 조건이 모두 거짓일 때 실행할 코드
- AND, OR, NOT 연산자
- AND: 모든 조건이 True일 때만 True
- OR: 하나라도 조건이 True이면 True
- NOT: 조건의 결과를 반전 (True<->False)
- 삼항 연산자(조건부 표현식)
참일 때 값 if 조건식 else 거짓일 때 값
- 조건문과 함께 자주 쓰이는 비교 연산자
연산자의미예시결과
== | 같음 | x == y | x와 y가 같으면 True |
!= | 같지 않음 | x != y | x와 y가 다르면 True |
< | 작음 | x < y | x가 y보다 작으면 True |
> | 큼 | x > y | x가 y보다 크면 True |
<= | 작거나 같음 | `x <= y | x가 y보다 작거나 같으면 True |
>= | 크거나 같음 | x >= y | x가 y보다 크거나 같으면 True |
django(7~10)
7강 Django의 설계 철학 - MTV Pattern
- 소프트웨어의 디자인 패턴
- 클라이언트 - 서버 또한 소프트웨어 디자인 패턴 중 하나에요.
- 자주 사용되는 소프트웨어의 구조를 마치 건축 공법처럼 일반화 해둔 것
Django의 디자인 패턴(MTV Pattern)
- MTV 패턴은 MVC 패턴을 살짝 변형한 것
- Model - View - Controller
- Model : 데이터와 관련된 로직을 관리
- View : 레이아웃과 관련된 화면을 처리
- Controller : Model과 View를 연결하는 로직을 처리
- MTV Pattern
- Model
- MVC에서의 Model입니다.
- 데이터와 관련된 로직을 처리합니다. → 데이터 구조 정의, 데이터베이스 기록 관리해요.
- Template
- MVC에서의 View입니다.
- 레이아웃과 화면상의 로직을 처리 →즉, UI와 레이아웃을 다루어요.
- View
- MVC에서의 Controller입니다.
- 메인 비지니스 로직을 담당합니다.
- 클라이언트의 요청에 대해 처리를 분기하는 역할을 합니다.
- DB도 조회하고 외부로 요청하기도 해요.
- 응답을 만들어서 클라이언트에게 전달해요.
- Model
MVCMTV
Model | Model |
View | Template |
Controller | View |
8강 Django Template 시작하기
- 순서
- 요청(Request)이 들어오면
- URL(urls.py) 처리
- View(views.py) 처리
- Template(html) 처리
- 응답(Response) 전달
- URL(urls.py) 방법1
- urlpatterns(URL패턴 목록)에 path('index/',views.py 경로) 추가
- path는 url경로 정의
- url경로가 index일 때 처리 정의
- views.py에 index view 추가
- views.py 경로에 views.index 작성
- views.py파일이 다른 폴더에 있기 때문에 from articles import views 추가
- python manage.py runserver
- 기존 링크에 /index를 추가 해주면 위에 정의한 함수들이 출력된 페이지가 나오게 된다.
- http://127.0.0.1:8000/index/
- URL(urls.py) 방법2
- urlpatterns(URL패턴 목록)에 path('index/',views.py 경로) 추가
- path는 url경로 정의
- url경로가 index일 때 처리 정의
- views.py에 index view 추가
- views.py 경로에 views.index 작성
- articles폴데에 pamplates 폴더 생성 index.html파일 생성 및 작성 (tip. !gkrh tab을 누르면 기본 html 자동 작성)
- python manage.py runserver
- 기존 링크에 /index를 추가 해주면 위에 정의한 함수들이 출력된 페이지가 나오게 된다.
- http://127.0.0.1:8000/index/
def index(request):
return render(request, 'index.html')
# render의 기본 구조
render(request, 템플릿, context)
9강 Django template System
- template란?
- 데이터를 보여주는 로직
- Template System
- 데이터 표현을 위해 다양한 도구를 제공
- DTL: Django Template에서 사용하는 문법(파이썬과 비슷)
- 변수, Variable: {{variable}}, view의 context의 키로 넘긴 데이터(value)를 접근할 수 있다.
- 필터, Filters: {{variable|filter}}, 필터는 약 60개가있어 docs를 참고하여 사용해야한다./커스텀도 가능
- 태그, Tags: {% tag %}, 반복 또는 논리를 수행하여 제어 흐름을 만들거나 특수한 기능을 수행(시작 태그{% if ~ %}, 종료 태그{% endif %})
- 주석, Comments: {# 한 줄 주선 #}, {% comment %} 여러줄 주석 {% endcomment %}
- 변수 사용 방법 views.py의 def함수 안에 context를 딕셔너리형태로 작성, html파일에 {{context의 키 이름}} 작성
- 태그 사용 방법 views.py의 def함수 안에 태그로 사용할 변수 정의 후 html파일에으로 작성, 태그의 인덱스 순서로 접근하기 위해선 {{태그이름.0}}, 태그에 함수를 적용하고 싶다면 {{태그이름.0|upper}}, 여러줄 태그로 for문을 사용하고 싶다면
- {{태그이름}}
- Templates Inheritance (base.html과 hello.html보고 참고)
- 코드의 중복 문제를 해결하기 위한 방법 즉, 템플릿 상속
- 상위 템플릿에서 하위 템플릿 마다 달라질 부분을 정의
- {% block block_name %} {% endblock block_name %}
- 하위 템플릿에서 상위 템플릿을 상속해서 확장한다는 것(최상단에 위치해야 함)
- {% extends 'template_name' %}
- 템플릿을 깔끔하게 저장하기 위해서 가장 위의 디렉토리에 templates폴더를 만들고 base.thml 파일 작성하고 settings.py의 TEMPLATES안의 DIRS를 작성 'DIRS': [BASE_DIR / 'templates']
10강 HTTP Form
- 클라이언트가 서버에게 데이터를 보내는 방법
<form action="/submit/" method="post">
<label for="username">사용자 이름:</label><br>
<input type="text" id="username" name="username" required><br>
<label for="email">이메일 주소:</label><br>
<input type="email" id="email" name="email" required><br>
<label for="password">비밀번호:</label><br>
<input type="password" id="password" name="password" required><br>
<input type="submit" value="가입하기">
</form>
- action
- 데이터가 전송될 URL을 지정합니다.
- 지정하지 않을경우 현재 페이지의 URL로 데이터를 전송합니다.
- method
- 데이터를 전송하는 방식(HTTP request method)을 지정합니다.
- HTML Form은 GET 방식 또는 POST 방식으로만 전송이 가능합니다.
- 실습은 data_throw.html 파일에 있다.
- 사용 태그 lable(for=my_data), input(type=text,id=my_data), button(type=submit)
- <>를 다 작성하면 뒤에 바로 텍스를 작성해서 화면에 노출
- input:
- 사용자의 입력을 받기 위해 사용
- type 속성에 따라 입력 동작 방식이 달라진다. (defalut값은 text)(text, password, date등)
- name으로 서버에 데이터를 전달하고, 서버는 name을 보고 데이터를 판단
- input의 name 속성:
- form을 제출(submit)하면 name속성에 설정된 값이 서버로 전송
- name속성의 값이 key가 되고, 사용자가 입력한 값이 value가 되어 전송
- HTTP란?
- 하이퍼텍스트 전송 프로토콜 (Hyper Text Transfer Protocol)
- 여러가지 리소스를 보내고 받을 때 사용하는 프로토콜 (통신규약) == 약속입니다.
- 요청(request)와 응답(response)로 이루어지는 통신입니다.
- 웹에서 이루어지는 데이터 교환의 기초라고 할 수 있습니다.
- HTTP methods
- HTTP에서 수행할 작업을 나타냅니다.
- 특정 자원에 대해 내가 수행하고자 하는 동작을 method로 정의.
- GET, POST, PUT, DELETE, … 등이 있다.
- GET: 특정한 자원을 조회할 때 사용.
- 쿼리스트링을 사용해서 전송
- 쿼리스트링: URL에 데이터가 포함되어 전송하는 방식