일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dag
- 인터페이스
- 기술 통계
- 추론 통계
- 확률분포함수
- 이분탐색
- Probability Distribution Function
- divide and conquer
- 다형성
- Solid
- 표본 추출
- BFS
- Random variable
- 스프링
- spring boot
- 분할정복
- Algorithm
- 오일러 경로
- dfs
- 깊이 우선 탐색
- PostgreSQL
- 확률분포
- 객체 지향 설계
- 확률
- 알고리즘
- 이진탐색
- 재설치
- 너비 우선 탐색
- 베이지안
- 확률변수
- Today
- Total
말하는 감자
Template에 List 여러개 번갈아 띄우기 본문
웹 어플리케이션 개발을 위해 Django 툴을 사용했다. 장고는 데이터베이스 설계와 함수 실행이 모두 파이썬으로 작성이 가능하다. Django로 처음 프로젝트를 생성하고 어플리케이션 생성하고 모델 마이그레이션하는 것 등 기본적인 것은 구글링과 유투브 튜토리얼의 내용과 반복되기 때문에, 개발하면서 많은 시간동안 해맸던 부분들을 적을 예정이다.
Template에 여러가지 List들 번갈아 가며 띄우기
일단 첫번째로, 논문을 리뷰하기 위해서는 main 페이지에서 사용자가 검색을 했을 때, 검색 결과에 해당하는 내용을 크롤링해와서 논문 제목, 논문 저자, 논문 링크를 순서대로 검색결과에 나타낼 수 있어야 한다. 크롤링 구현은 다른 팀원분이 맡았고, 그 크롤링의 결과로 논문 제목 배열, 논문 저자 배열, 논문 링크 배열 세 개의 배열들을 template에 렌더링을 시켜주어 template 상에서 받은 변수들을 가지고 화면에 보일 코드를 작성하면 된다.
'검색'버튼을 눌렀을 때 실행되는 views.py안의 함수
def search(request):
#...크롤링을 구현...
return render(request, 'result.html', {'titles':titles, 'authors':authors, 'links':links})
result.html - view.py에서 받은 배열들 {{links}}, {{titles}}, {{authors}}를 가지고 제목-링크-저자로 번갈아가며 띄우는 것이 목표
세 개의 배열을 같은 인덱스로 접근해서 (for문 안에서 titles[i], links[i], authors[i]) 차례로 나열하면 될 줄 알았다. 하지만, titles.0 이런식으로 숫자를 정해놓고 작성하면 가능하기는 한데 titles.i 처럼 변수로 접근할 수가 없었다. 이 문제를 해결할 수 있는 방법을 정말 열심히 구글링한 결과 생각보다 간단한 솔루션이 나왔다. 'zip'라는 함수를 사용하면 배열을 하나의 배열로 다시 압축할 수 있다. 그 압축된 배열을 렌더링 시켜주면 html에서 다시 풀러서 꺼낼 수 있다.
def search(request):
#...크롤링을 구현...
zipped_list = zip(links, titles, authors)
return render(request, 'result.html', {'zipped_list': zipped_list})
result.html
{% for links, titles, authors in zipped_list %}
{{links}}
{{titles}}
{{authors}}
{% endfor %}
이런식으로 하면 링크-제목-저자 순으로 배열들이 번갈아가며 나열된다.
'Backend > django project' 카테고리의 다른 글
AWS 홈페이지 배포하기 (0) | 2020.11.17 |
---|---|
메모장과 북마크 팝업창으로 구현하기 (0) | 2020.11.17 |
Community 시스템 설계 하기 (0) | 2020.11.17 |