IDU-IFP / ifp-flask-study

📖 IFP's Flask Framework study repository
0 stars 6 forks source link

Ep05 : 블로그 웹 애플리케이션 개발(2) - 관리자 페이지, 카테고리, 게시물 다루기 #5

Open TGoddessana opened 2 years ago

TGoddessana commented 2 years ago

Ep05에서는 flask-admin으로 관리자 페이지를 구현하고, 카테고리, 게시물, 저자를 처리하는 방법에 대해 다룹니다.

Ep05부터는 테스트 코드를 이용해서 우리가 작성한 코드들을 검증해 볼 것이고, 앞으로는 구현하고자 하는 기능에 대한 테스트 코드를 먼저 작성한 후 개발을 진행할 것입니다. 우리가 진행하는 것은 완벽한 형태는 아니지만, 이를 TDD라고 합니다. https://media.fastcampus.co.kr/knowledge/dev/tdd/

우리는, 그것을 위해서 파이썬 내장 단위 테스트 프레임워크인 unnitest를 이용할 것입니다. 잠깐 살펴보고 갈까요?

import unittest
class TestSomething(unittest.TestCase):

    # 테스트가 수행되기 전 자동 호출되는 메서드
    def setUp(self):
        print("테스트를 준비합니다.")

    # 테스트가 끝나고 나서 호출되는 메서드
    def tearDown(self):
        print("테스트를 종료합니다.")

    # 진짜 테스트하고 싶은 것 1
    def test_add(self):
        print("1+1 은 2와 같은지 테스트합니다.")
        self.assertEqual(1+1, 2) # assertEqual은 1+1 == 2 인지 검사

    # 진짜 테스트하고 싶은 것 2
    def test_mult(self):
        print("2의 세제곱이 8과 같은지 테스트합니다.")
        self.assertEqual(8, 2**3) # assertEqual은 8 == 2^3 인지 검사

위의 코드는 매우 간단하게 구성한 unittest 의 예제입니다. 이후 테스트 코드를 수행해 보세요. 아래와 같은 결과가 나타날 겁니다.

image

터미널의 "OK" 라는 메시지가 보이죠? 2개의 테스트를 수행했고, 모두 성공했다고 알려주고 있네요. 맨 위 두 개의 setUp과 tearDown은 unittest 내부적으로 정해진 메서드명입니다. 결과 화면을 보면, 테스트 전 후로 호출되는 걸 확인할 수 있습니다. 아무튼, 이번 에피소드에서는 위의 코드가 지겹도록 나타날 겁니다. 테스트를 돌렸을 때에, 왜 실패했구나~ 정도는 알 수 있어야 이번 에피소드를 진행하는 데에 어려움이 없을 것입니다.

(과제) 아래의 블로그 자료를 보고, 그곳에서 구현하는 기능들을 똑같이 구현한 후 그 과정을 본인 블로그에 정리해 주세요.

https://gdsanadev.com/14504 내용이 꽤 많습니다. 각자 정리하는 방법은 다를 수 있겠지만, (테스트 코드 작성 -> 테스트 코드를 수행하고 나오는 문제 해결) 을 위주로 정리하시는 것을 추천합니다.

(과제 사항 추가) 로그인한 사람이 스태프 권한을 가지고 있다면, "New Post" 버튼이 나타날 수 있도록 구현해 보세요.

image

로그인한 상태이지만 해당 유저가 스태프 권한을 가지고 있지 않으므로, "New Post" 버튼이 나타나지 않습니다. (당연히, 로그아웃한 상태에서도 나타나지 않아야 합니다.

image

스태프 권한을 가지고 있는 사람이 로그인한다면, 위와 같이 "New Post" 버튼이 나타나야 합니다. post_detail.html 헤더 블록에 {% if ...%} 로 시작하는 아래의 코드를 작성하면 되겠죠?

image
2gang commented 2 years ago

https://rud0503.tistory.com/11

youngjoo00 commented 2 years ago

https://youngjoo-com.tistory.com/10

overtae commented 2 years ago

https://overtae.github.io/blog/python%20flask/flask-admin/

leesunuk commented 2 years ago

https://leesunuk.tistory.com/110

ji1210h commented 2 years ago

https://ji1210h.tistory.com/281 https://ji1210h.tistory.com/282

D-Sup commented 2 years ago

https://substory.tistory.com/45