파이썬 가상환경을 만들어 Flask를 설치해주었다.가상환경을 만들어 쓰는 이유는 해당 환경에서만 사용할 라이브러리, 모듈등을 따로 관리할수있어 기존에 설치된 라이브러리와 꼬이는걸 방지할 수 있다고 한다.먼저 파이썬 가상환경을 이렇게 만들었다.C:> mkdir venvs
파이썬을 개발할때 많이 사용하는 에디터중 하나인 PyCharm을 이용해 진행하려고한다. 먼저 https://www.jetbrains.com/ko-kr/pycharm/download/#section=windows 에서 무료버전인 Community를 설치해줬다. 설치할때
앞으로 만들 프로젝트의 구조다. models.py - 데이터 베이스 처리 이 프로젝트는 ORM을 지원하는 SQLAlchemy를 사용한다. SQLAlchemy는 모델 기반으로 데이터 베이스를 처리하기 때문에 모델 클래스들을 정의할 파일이다. forms.py - 서버로
pybo/\_\_init\_\_.py 파일 내용중 hello_pybo 함수는 URL 에서 /에 매칭되는 함수다. 그 매핑을 @app.route('/') 라는 애너테이션이 만들어주는데, 이처럼 애너테이션으로 매핑되는 함수를 라우트 함수라고 한다. 이전에 작성해본 코드는
원래 DB를 쓰려면 SQL 쿼리가 필요하다. 그러나 ORM이 있으면 파이썬 문법만으로도 DB를 다룰 수 있다.ORM : object relational mapping, DB 데이터를 저장하는 테이블을 파이썬 클래스로 만들어 관리하는 기술. SQL문법을 파이썬 객체로 맵
질문 답변 게시판을 만들기 위한 질문, 답변에 해당하는 모델을 만들어야한다.각 모델에 필요한 속성은 아래와 같다.개인적으로 sqlalchemy_utils IPAdress를 이용해 질문,답변 작성자의 ip도 기록되도록 속성을 추가해보려 했는데, 삽질만하다가 시간이 다 갔
오늘은 이전에 만든 모델을 사용할 것이다.flask shell 명령어로 실행해준다. flask shell을 이용해야 모델을 이용할 수 있다.flask shell을 실행해준후, 이전에 만든 모델들을 불러낸 후 질문 모델 객체를 하나 만들어줬다. 그 다음으로 만들어낸 객체
현재 main_views.py 파일 상태로는 localhost:5000 접속시 Pybo index라는 문구만 뜬다. 이제 Pybo index문구 대신 아까 만들었던 질문들의 제목을 출력해 볼 것이다.질문들의 제목을 보이기위해서 main_views.py파일에 1, 14,
먼저 views 디렉토리안에 question_views.py파일을 만들어, 질문 목록, 질문 상세 기능을 분리해주자.코드는 main_views.py와 매우 유사하다. 그래서 main_views.py 내용을 복사해 조금 수정하면 된다.먼저 블루프린트 객체를 생성할 때 q
이제는 질문 리스트를 볼 수 있다. 그래서 질문 리스트 페이지에 접속해 답변 다는 기능을 만든다.질문 상세 페이지인 question_detail.html 파일에 답변버튼 form을 만들어줬다.답변 저장 URL은 form의 action 속성에 지정된 url_for 함수를
웹 페이지는 CSS를 이용해 디자인을 적용한다. CSS파일을 적용 하려면 pybo/static 디렉토리에 위치해야 한다.먼저 Pycharm에서 pybo 디렉토리 아래에 static 디렉토리를 만들고, 안에 style.css 파일을 만들어줬다.답변을 입력하는 박스 tex
OS, 브라우저 종류 상관없이 웹 페이지가 동일하게 보이려면 표준 HTML 문서를 작성해야 한다.이전에 작성한 템플릿 파일은 표준 HTML 구조가 아니었다. 만약 표준 HTML 구조로 변경하면 CSS파일이 추가되거나, 이름이 수정될때 템플릿 파일을 모두 찾아 head
form은 사용자에게 입력 양식을 편리하게 제공하기 위해 사용한다. flask의 form 모듈을 사용하면 form으로 전송되는 데이터들을 여러가지 조건으로 쉽게 검증할 수 있다. 플라스크 폼 모듈 설치 cmd -> myproject에서 로 라이브러리를 설치한다. >
웹에서는 수 많은 페이지 중에서, 원하는 페이지로 간단하게 이동할 수 있도록 내비게이션 기능을 이용한다. 그래서 Pybo에도 내비게이션 바를 추가할 것이다. 내비게이션 바는 부트스트랩 컴포넌트로, 추가로 알고 싶은 것은 아래의 부트스트랩 내비게이션 바 공식문서에서 찾
게시물이 많을 경우 페이징 기능으로 1 페이지당 게시물 개수를 제한하는게 좋다. 만약 한 페이지에 모든 게시물을 나타낼 경우, 로딩시간도 오래걸리고, 스크롤바도 내려야 하는 불편함이 생긴다.페이징 기능을 테스트하기위해, flask shell을 이용하여임시 게시물을 만들
이전에 시간 표시를 html파일에서 출력형식을 지정하여 보기 좋게 바꾼적이 있다. 앞으로 만들 페이지에서도 위와 같이 출력해야하거나 출력형식을 수정해야한다면 매우 귀찮을 것이다. 오늘 공부할 템플릿 필터는 이런점을 개선시켜준다.먼저 pybo 디렉토리에 filter.py
지금 게시글 번호를 보면 20~1 순으로 반복되고있다. 원하던 게시글번호는 전체게시글중에서 몇번째 글인지 나타내는것이였다. 게시물 번호를 공식으로 만들어 세우면 된다300개를 20개씩 1페이지로 나타냈을때최근 게시물부터 300, 299, 298,... 1 이렇게 나타낼
오늘은 회원가입 기능을 만든다.회원가입 기능을 만들고, 후에 로그인, 로그아웃을 구현한다.회원가입을 위한 회원 정보 모델이 필요하다.models.py 파일에 User 모델을 추가했다. id는 기본키, username, password, email은 필수입력이고, use
회원가입 기능을 넣었으니 드디어 로그인 및 로그아웃 기능을 넣을수 있다.먼저 form.py파일에 로그인 폼을 만든다.다음으로 로그인 라우트 함수를 만든다.auth_views.py 파일에 위와 같이 코드를 추가했다.세션은 플라스크 서버를 구동하는 동안에 영구히 참조할 수
회원가입, 로그인, 로그아웃 기능을 만들어 이제 작성자가 누구인지 알 수 있다. 이를 이용하기 위해 모델을 다듬는다.\_\_init.py\_\_ 파일을 수정해 제약 조건 이름을 MetaData 클래스를 사용해 규칙을 정의한다. 그러지 않으면 제약조건에 이름이 없다고 오
드디어 게시글을 수정하고 삭제하는 기능을 만든다. models.py 파일내에 있는 Question, Answer 클래스에 해당 코드를 추가했다. 수정일시를 저장한다. 그리고 cmd에서 데이터베이스를 변경해줬다. 현재 로그인한 사람이 글쓴이 일때, 수정 버튼을 보이
이번에는 질문글, 답변글 등 해당 글에 대해서 의견을 말할 수 있는 댓글 기능을 만든다. 댓글 모델을 작성했다. 댓글 모델은 댓글 고유번호, 댓글작성자, 댓글 내용, 작성일시, 수정일시, 질문에 댓글을 다는 경우, 답변에 댓글을 다는 경우로 구성 되어있다. 모델이
오늘은 커뮤니티 게시판이라면 필수인 추천 기능을 만든다.추천기능은 1명이 여러개의 글을 추천, 1개의 글에 여러명이 추천할 수 있다.그래서 다대다 관계 모델을 사용해야한다.다대다 관계를 정의하는 db.Table 클래스로 정의되는 테이블 객체를 만들었다.question_
가끔 웹이나 앱으로 쇼핑중에 실컷 스크롤을 내리면서 탐방하는데, 이 상품 저 상품 구경하다가 뒤페이지로 이동해 다시 탐방하려할 때 스크롤이 맨위로 올라가 다시 일일이 내렸어야 했던 경험이 많다..별거 아닌것 같아 보여도 은근 성가신 문제인데 이 문제를 앵커 엘리먼트로
일반 텍스트로 쭉 나열 하는것보다, 강조할건 강조하고 표시할건 표시하는게 읽을때도 훨씬 편하다. 마크다운 기능이 이러한 역할을 해준다.먼저 Flask-Markdown을 설치해준다.그리고 \_\_init.py\_\_ 파일에 마크다운을 import 해주고마크다운 문법을 편
이제 책에서 제공하는 마지막 기능인 검색, 정렬 기능이다.특히 검색 기능을 사용하려면 조인, 아우터조인, 서브쿼리라는 개념을 알아야한다. 다행히 나는 SQLD 자격증 공부를 했을때 개념들은 공부 했었다.조인의 경우 교집합이라고 보면 쉽다.위 코드는 Question모델과
먼저 검색할 페이지인 question_list에 검색창을 추가했다.그리고, 같은 템플릿에 page와 kw를 동시에 GET 방식으로 요청하도록 form 엘리먼트를 추가했다. action 속성은 폼이 전송되는 URL이므로 목록 조회 URL을 지정한다.from .. mode
이제 책의 기능 구현 목차중에서 진짜진짜 마지막이다. 처음 시작할때 양이 많아보여 도중에 그만두지않고 끝까지 갈수있을지 막막했는데 꾸준히 하다보니까 끝까지 와서 기쁘다. 오늘 정렬기능을 추가하고, 여기서 배웠던 내용을 토대로 나만의 기능을 하나씩 추가해야겠다.책에서는
지금까지 만든 pybo 사이트를 aws 서버를 이용해 열어보았다.무엇때문인지 SQL부분에서 계속 에러가 났다...몇시간동안 계속 구글링하고, 삭제 및 재설치하면서 세팅도 바꿔보고 반복하면서 오류났다고 알려준 코드를 조금씩 바꿔봤는데도 안됐다... 진행할때 db파일을 초