220207 TIL

TIL DAY 172

오늘 배운 일

✔️ Django 웹 개발

1. 아직 저장된 데이터가 없다면?

만약에 데이터베이스에 작성된 글이 하나도 없을 때는 어떻게 해야 될까?

우리는 데이터베이스에 글이 없다고 가정하기 위해 먼저 모든 글을 지워주도록 해준다.

모든 데이터를 삭제하기 위해 우리가 할 수 있는 방법은 두 가지인데

  • 첫 번째 방법인 관리자 페이지로 가서 모든 글을 삭제하는 방법

서버를 실행해서 밑에 있는 링크로 들어가준다.

http://127.0.0.1:8000/admin/

다음에 로그인을 해주고 그리고 나서 Posts 로 들어가준다.

그리고 이렇게 모든 게시글을 선택해주고...

Action 옆에 Delete 로 맞춰서 Go 를 누르면 삭제가 된다.


  • 또 다른 방법으로는 django 의 ORM 을 이용해서 한 번에 지우는 방법이 있다.

이 방법을 한번 해보겠다.

우선 서버를 끄고 새로운 터미널을 생성해서 다음과 같이 커맨드를 실행시켜준다.

python3 manage.py shell

이렇게 해서 django 의 셀을 켜주고 다음에 우리가 사용할 Post 모델을 가져와본다.

그리고 다음과 같이 커맨드를 따라서 작성해준다.

그리고 모든 포스트를 가져올려면 밑에 커맨드를 참고해준다.

그러면 현재 우리가 갖고 있는 게시글 세 개가 잘 나온다.

그러면 이 모든 글을 삭제해보겠다.

all 끝에다가 delete 을 해주면 삭제가 다 됐고 다시 게시글 목록을 보면...

게시글이 다 삭제돼서 아무것도 없는 것을 확인할 수 있다.

자 그러면 다시 개발 서버를 켜고 메인 페이지로 들어가 본다.

쉘에서 나갈려면 exit() 을 해준다.

http://127.0.0.1:8000/posts/

메인 페이지로 이동하면 이렇게 아무런 글이 표시되지 않고 있다.

사실 이 상태가 에러가 난 것은 아니고 정상적인 동작을 한 것이지만 유저가 이 화면을 보았을 때 뭔가 이상하다고 느끼거나 친절하지 않다고 생각할 수 있다.

이렇게 글이 없을 때는 작성된 글이 없으니까 '첫 글을 작성해보는 건 어떨까요' 같은 문구가 화면에 보이는게 유저 경험 측면에서 더 좋을 것 같다.

한번 구현해보자!

서버를 꺼주고 post_list 템플릿으로 가서 다음과 같이 코드를 작성해준다.

post_list.html

게시글이 있을 때는...

코드를 넣어주면 되는데 하이라이트 된 부분들이 기존의 게시글이 있을 때 전체 게시글을 보여주는 코드였다.

이것을 잘라내서 if 와 else 사이에 넣어준다.

그 다음에 게시글이 없을 때의 코드를 써줄 건데 게시글이 없을 때는 div 태그를 하나 만들어준다.

그리고 그 안에 p 태그를 만들어서 문구를 작성해준다.

다 끝났으니 한번 서버를 실행시켜서 확인해본다!

웹 페이지를 접속하면...

다음과 같이 문구가 잘 나타났다.

그리고 글쓰기를 해서 다음과 같이 작성해주고...

작성완료 버튼을 클릭해주면...

이런 식으로 게시글이 잘 보인다.

끝으로 :

  • 이번에는 데이터베이스에 작성된 글이 없을 때 처리할 수 있는 방법에 대해 알아보았다.
  • 우리가 지금까지 배운 내용 토대로 다양한 상황을 처리할 수 있다.

좋은 웹페이지 즐겨찾기