inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

남박사의 파이썬으로 실전 웹사이트 만들기

게시판만들기 - 글 리스트

블럭 위치 및 검색결과 인덱스 관련 궁금증

223

suhr

작성한 질문수 3

1

안녕하세요..

간단한 궁금증이 생겨서 질문해 봅니다

1. 말씀하신 첫번째 블럭이 계산해보면 실제 숫자는 0번째 블럭부터 시작하는거 같은데..

제가 올바르게 이해한게 맞나요?

2.  검색결과를 보여주는 페이지의 경우에는 검색결과 만큼 페이지를 누를 수 있는게 아니라  현재 가지고있는 데이터 페이지 만큼 누를 수 있게 구현이 됬네요

예를들어 데어터가 50개, 한블록당 10개씩 보여주면 5페이지 까지 있을텐데 이 상태에서 검색을 해서 검색결과가 1개건 2개건 상관없이 5페이지 까지 조회가 가능하네요...

제 구현에 문제가 있는건지 원래 이렇게 설계된 건지 궁금합니다...

즐거운 크리스마스 보내세요 :)

python

답변 1

0

남박사

1. block_num 값은 시작이 0 이 맞습니다. 블럭의 사이즈 이하의 페이지에서는 모두 0이 나오고 블럭 사이즈 보다 큰 페이지로 넘어가야 1로 증가 하게 되어있습니다. 그러나 block_start 는 block_size * block_num 을 계산 후 +1 을 하기 때문에 1부터 시작하는게 맞습니다.

2. 강좌에서는 말씀하신데로 데이터가 50개, 한블럭다 10개씩 보여주면 5페이지가 있고 이 상태에서 검색해서 결과가 1개건 2개건 5페이지까지 조회가 되게 되어있습니다. 다만 뒤의 2~5페이지까지는 클릭이 되지 않게만 처리를 했습니다만 이렇게 페이징 처리를 하는건 전적으로 개발자의 마음입니다. 정해진 정답은 없는거라 그냥 모두 출력이 가능한 상태로 예제를 보여드린것 뿐이고 클릭되지 않는 부분의 코드를 제거해서 아예 출력이 안되게 결론적으로 검색시 1페이지만 나오게 변경하셔도 됩니다.

강좌의 예제는 만약 현재 페이지가 7 이고 블럭사이즈가 5 라면

6, 7, 8, 9, 10

이렇게 페이지가 출력 될텐데 어떤 사이트는 

5, 6, 7, 8, 9

이런식으로 현재 페이지가 무조건 가운데 오게 표기 되는 사이트도 있습니다.

    # 페이지 블럭을 10개씩 표기
    block_size = 10
    # 현재 블럭의 위치
    block_num = int((page - 1) / block_size)
    # 블럭의 시작 위치
    block_start = int((block_size * block_num) + 1)
    # 10의 중간은 5기 때문에 5보다 크면 현재 페이지를 중간으로 위치 시킬 수 있음
    # 좀 더 프로그래밍 스럽게 하려면 이렇게 5라는 상수를 사용하지 않고
    # if page > int(block_size / 2)
    # 이렇게 변수를 그대로 사용하는걸 좀 더 추천
    if page > 5:
        block_start = page - 5
    else:
        block_start = int((block_size * block_num) + 1)

    # 블럭의 끝 위치
    block_last = math.ceil(block_start + (block_size - 1))

위의 내용처럼 구현해서 html 로 넘기면 가운데 표기를 하실 수도 있습니다. 

어쨌든 결론적으로 정해진건 없습니다. 어떤 원리로 구동되는지 이해하셨다면 구현하고 싶은데로 구현하시는게 정답이고 사이트를 많이 보시면서 어떤 스타일로 구현 되었는지도 주의깊게 보시는 습관이 중요하리라 생각됩니다. 궁금하신 사항이 해결 되셨는지 모르겠습니다. 또 궁금한게 생기시면 또 질문주세요 ^^

iis 접속후 자동으로 로그인 창이 나오도록 설정이 기능한가요?

0

65

2

리스트 이동 시 창 에러 발생

0

75

1

배포후 회원 등록 후 로그인 에러...

0

74

2

내부 서버 오류

0

67

2

app.config["MONGO_URI"] = "mongodb://localhost:27017/pm_db"

0

53

2

DB 검색하면 데이터가 없습니다. 라고 나와요. 5시간을 찾아봐도 모르겠어서 문의드려봅니다.

0

47

1

몽고db studio3T를 깔았는데

0

57

2

flake8과 linter

0

74

3

500이 뜹니다.

0

57

2

첨부파일 삭제

0

66

2

검색기능 질문

0

61

2

google.py

0

66

2

Studio 3T에 DB insert가 되지 않는 문제를 해결하지 못하고 있습니다 ㅠ

0

83

3

혹시 전체 코드 공개되어 있나요?

0

96

1

join.html 의 form 태그값 을 member_join() 에서 처리못함.

0

104

1

google.py 몽고db 샘플데이터 만들기

0

100

2

flake8 설치 이후 명령팔레트에서 linter가 안보입니다.

0

237

2

파이썬으로 만들어서 웹호스팅에 올릴경우

0

304

1

현재 구글검색 무한스크롤변경 문의합니다

0

297

1

몽고디비아틀라스로 추가 공부해서 올립니다.

0

218

1

IIS 500.19에러

0

661

2

버전 문제도 수정했는데 결과가 안나옵니다.

0

258

1

데이터베이스 저장관련 질문입니다.

0

270

1

test가 생기지 않습니다.

0

511

3