뷰와 템플릿
- SQL order by desc 및 limit 구현 예시
- Question.objects.order_by('-pub_date')[:5]
- order_by 컬럼명 앞 "-"이 있으면 내림차순(desc), 없으면 오름차순(asc)
- model에 있는 내용 화면(view)에 출력하는 과정
- templates/polls/index.html 생성
- views.py 에서 context 변수에 dict 형태로 선언
- context = {'first_question' : latest_question_list[0] }
- 'first_question' 이라는 키와 latest_question_list[0] 이라는 값을 index.html에 전달할 변수
- context = {'first_question' : latest_question_list[0] }
- index.html에 전달하고자 view.py 에 from django.shortcuts import render 선언
- 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'))
- KeyError 또는 Choice.DoesNotExist 예외 발생시 render의 context에 error_message 추가 전달
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 |