카테고리 없음

내일배움캠프 54일차 TIL + Python-조건문, Django

onesword 2024. 12. 10. 21:19
{% for book in books %}
<li>{{book}}</li>
{% endfor %}

목차

  • Python-조건문
  • django(7~10)

Python-조건문

  1. 조건문의 기본 개념
    • if: 조건이 True이면 코드블록을 실행한다.
    • elif: 앞의 조건이 거짓이라면 다음 조건을 검사
    • else: 위의 모든 조건이 거짓일 때 실행
  2. if 문
if 조건식:
    위 조건이 참일 때 실행할 코드
elif 조건식:
    if가 거짓이고 elif가 참일 때 실행할 코드
else:
    위 조건이 모두 거짓일 때 실행할 코드
  1. AND, OR, NOT 연산자
    • AND: 모든 조건이 True일 때만 True
    • OR: 하나라도 조건이 True이면 True
    • NOT: 조건의 결과를 반전 (True<->False)
  2. 삼항 연산자(조건부 표현식)
참일 때 값 if 조건식 else 거짓일 때 값
  1. 조건문과 함께 자주 쓰이는 비교 연산자

연산자의미예시결과

== 같음 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도 조회하고 외부로 요청하기도 해요.
        • 응답을 만들어서 클라이언트에게 전달해요.

MVCMTV

Model Model
View Template
Controller View

8강 Django Template 시작하기

  • 순서
    1. 요청(Request)이 들어오면
    2. URL(urls.py) 처리
    3. View(views.py) 처리
    4. Template(html) 처리
    5. 응답(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에 데이터가 포함되어 전송하는 방식