묠니르묘묘
꾸준히 성장하는 개발자스토리
묠니르묘묘
전체 방문자
오늘
어제
  • 분류 전체보기 (188)
    • 프로그래밍 (48)
      • 디자인패턴 (4)
      • 예외,에러 (4)
      • Java (29)
      • Kotlin (3)
      • React.js (4)
      • JavaScript (2)
      • Apache Kafka (2)
    • Spring (49)
      • Spring (21)
      • Spring Cloud (3)
      • JPA (25)
    • 코딩테스트 (31)
      • 알고리즘 (5)
      • Java - 백준 (26)
      • Java - 프로그래머스 (0)
    • AWS (7)
    • 데이터베이스 (6)
    • 개발 etc (23)
    • 도서 (5)
    • 회고록 (4)
    • 데브코스-데이터엔지니어링 (15)

인기 글

최근 글

hELLO · Designed By 정상우.
묠니르묘묘

꾸준히 성장하는 개발자스토리

데브코스-데이터엔지니어링

장고 활용한 API 서버 만들기(2)

2024. 4. 23. 23:08

뷰와 템플릿

  • SQL order by desc 및 limit 구현 예시
    • Question.objects.order_by('-pub_date')[:5]
    • order_by 컬럼명 앞 "-"이 있으면 내림차순(desc), 없으면 오름차순(asc)
  • model에 있는 내용 화면(view)에 출력하는 과정
    1. templates/polls/index.html 생성
    2. views.py 에서 context 변수에 dict 형태로 선언
      • context = {'first_question' : latest_question_list[0] }
        • 'first_question' 이라는 키와 latest_question_list[0] 이라는 값을  index.html에 전달할 변수
    3. index.html에 전달하고자 view.py 에 from django.shortcuts import render 선언
    4. index 함수 내 `return render(request, 'polls/index.html', context)` 반환

 

템플릿에서 제어문 사용하기

  • {% if 조건 %} 내용 {% elif 조건 %} 내용 {% else %} 내용 {% endif %}
  • {% for e in elements %} 내용 {% endfor %}

 

404 에러 처리하기

  • try-except 처리
  • get_object_or_404() 처리

 

폼(Form)과 커스터마이징

  • <form> 옵션 action과 method 속성 지정
    • action="{% url 'polls:vote' question.id %}"
    • method="post"
  • urls.py 에 polls:vote 에 대한 처리 로직 추가
    • path('<int:question_id>/vote/', views.vote, name='vote'),
  • views.py 에 응답 항목에 대한 save 및 예외 처리 로직 추가
    • def vote(request, question_id): 추가
    • request.POST('choice'] 를 통해 선택한 항목 가져오기
    • 예외처리 : 선택하지 않을 경우 try-except-else
      • KeyError 또는 Choice.DoesNotExist 예외 발생시 render의 context에 error_message 추가 전달
        • KeyError 예외 : 선택하지 않은 채 제출
        • Choice.DoesNotExist 예외 : choice id가 제출되는 시점에서 존재하지 않는 경우
      • 정상 요청인 경우 votes += 1 및 save() 이후 Redirect 수행
        • HttpREsponseRedirect(reverse('polls:index'))

 

Python 문법 - *args, **kwargs

  • 설명 링크
  • *args : 여러 개의 인자를 묶어서 하나의 튜플로 묵어주고 이를 args에 할당한다고 생각하자
  • **kwargs : 여러 개의 keyword arguments 들을 묶어서 딕셔너리로 만들어준다고 생각하자
저작자표시 비영리 (새창열림)

'데브코스-데이터엔지니어링' 카테고리의 다른 글

Airflow 란 무엇인가?  (0) 2024.05.26
Airflow 설치 - Docker  (0) 2024.05.23
장고 활용한 API 서버 만들기  (0) 2024.04.09
Seaborn 시각화 라이브러리, 기상청 날씨 정보 시각화, 해시코드 질문태그 빈도 시각화, 단어구름 시각화  (0) 2024.04.06
Selenium, WebDriver, Implicit / Explicit Wait, Mouse Event, Keyboard Event  (1) 2024.04.06
    '데브코스-데이터엔지니어링' 카테고리의 다른 글
    • Airflow 란 무엇인가?
    • Airflow 설치 - Docker
    • 장고 활용한 API 서버 만들기
    • Seaborn 시각화 라이브러리, 기상청 날씨 정보 시각화, 해시코드 질문태그 빈도 시각화, 단어구름 시각화
    묠니르묘묘
    묠니르묘묘

    티스토리툴바