본문 바로가기

Django/따라하는 장고

(43)
10. 답변 등록하기 [답변 등록 폼] 질문 상세 템플릿에 답변을 저장할 수 있는 form을 추가해보자. pybo/question_detail.html 을 다음과 같이 수정하자. 답변의 내용을 입력할 수 있는 textarea 와 답변을 저장 할 수있는 "답변등록" 버튼도 추가했다. 답변 저장을 위한 URL은 form 태그의 action 속성에 {% url 'pybo:answer_create' question.id %} 로 지정했다. form 태그 바로 밑에 있는 {% csrf_token %} 은 보안에 관련된 항목으로 form으로 전송한 데이터가 실제 웹페이지에서 작성한 데이터인지를 판단하는 역할을 한다. 막약 해커가 이상한 방법으로 데이터를 전송할 경우에는 서버에서 발행한 csrf_torkn 값과 해커가 일방적으로 보낸 c..
9. URL 별칭 [URL 하드 코딩] question_list.html 템플릿에 사용된 다음 링크를 보자. 질문 상세를 위한 URL 링크이다. 하지만 이러한 URL 링크는 수정될 가능성이 있다. 예를 들어 http://localhost:8000/pybo/question/2 또는 http://localhost:8000/pybo/2/question 처럼 바뀔수 있다. 실제 프로젝트에서 이러한 URL 리팩토링은 빈번하게 발생한다. URL 링크가 자주 변경된다면 템플릿에서 사용한 모든 URL 들을 일일이 찾아가며 수정해야 하는 리스크가 발생한다. 이러한 문제점을 해결하기 위해서는 해당 URL에 대한 실제 링크 대신 링크의 주소가 1:1 매핑되어 있는 별칭을 사용해야 한다. 링크의 주소 대신 별칭을 사용하려면 URL 매핑에 na..
8. 템플릿 [질문 목록] http://localhost:8000/pybo/ 페이지에 들어가면 등록한 질문을 볼 수 있도록 구현해 보자. pybo/views.py 파일의 index 함수를 다음과 같이 수정하자. 질문 목록 데이터는 Question.objects.order_by('-create_date') 로 얻을 수 있다. order_by는 조회 결과를 정렬하는 함수이다. order_by('-create_date')는 작성일시 역순으로 정령하라는 의미이다. " - " 기호가 붙어 있으면 역방향, 없으면 순방향 정렬을 의미한다. 게시물은 보통 최신순으로 보기 때문에 작성일시의 역순으로 정렬한다. render 함수는 파이썬 데이터를 템플릿에 적용하여 HTML로 반환하는 함수이다. 즉, 위에서 사용한 render 함수는 ..
7. 장고 관리자 [장고 관리자 생성] 장고 관리자를 생성하기 위해서는 슈퍼유저를 먼저 생성해야한다. python manage.py createsuperuser 명령어를 수행해보자. 일단 아이디는 admin 비밀번호는 1111로 설정하였다. 관리자 계정이 생성 되었으니 로컬 서버를 구동한 후 http://localhost:8000/admin 페이지로 접속해보자. admin 페이지에 로그인 화면이 나오면 아까 만들었던 슈퍼유저 계정을 입력해서 로그인 하면 이런 화면으로 접속이 된다. [모델 관리] 장고 관리자 계정에 저번에 만들었던 모델들을 등록해보자. pybo 앱 디렉토리에 admin.py 파일이 있다. admin.site.register 로 Question 모델을 등록했다. 그 후 관리자 화면을 새로고침 해보면 Ques..
6. 모델 사용법 [ 모델 사용법 ] 전에 모델을 만들어 보았으니 이제 사용법을 장고 셸로 배워보자. 일단 python manage.py shell 명령어로 장고 셸을 열자. 명령어를 입력하면 셸이 열린다. 반드시 장고 셸로 실행해야하는 이유는 장고 셸에는 장고에 필요한 환경들이 자동으로 설정되어 실행되기 때문이다. 장고 셸에 Question, Answer 모델을 import 해서 사용한다. 장교 셸에 from pybo.models import Question, Answer 명령어를 수행하자. 그 후 일단 Question 모델을 이용해 질문 데이터를 만들어보자. question,answer 모델을 import 한후, create_date 에 적어넣을 timezone 도 import 한다. 객체 Question모델의 객체q..
5. 장고 모델 작성법 [ migrate ] 장고는 모델을 이용해 데이터베이스를 처리한다. python manage.py runserver 실행시 나오는 문구를 보면 18개의 적용되지않은 mirgrations 들이 있다. admin, auth, contenttypes, sessions 앱에 migration을 적용하기전까지 프로젝트가 정상적으로 작동하지 않을것이라고 한다. python manage.py migrate 명령어로 적용하라고 한다. admin, auth, contenttypes, sessions 앱들은 장고 프로젝트 생성시 기본설치되는 앱이다. 설치된 앱은 config/settings.py 에 적혀있다. 경고문에 적힌 앱들말고도 messages, staticfiles 앱들도 있는데 이 두개의 앱은 데이터베이스와 관련..
4. 파이참의 기본 요소 이전에 프로젝트를 만들었지만 프로젝트에 기능을 추가하기 위해서는 앱을 생성해야한다. (mysite) stdiohan@stdiohan-MacBookPro mysite % django-admin startapp pybo (mysite) stdiohan@stdiohan-MacBookPro mysite % 파이참 터미널에 django-admin startapp pybo 를 입력해 앱을 생성한다. 브라우저에서 http://localhost:8000/pybo 페이지를 요청했을때 "안녕하세요 pybo입니다." 라는 문자열을 출력해보자 먼저 터미널에 python manage.py runserver 를 입력해 로컬서버를 구동한다. (mysite) stdiohan@stdiohan-MacBookPro mysite % pyt..
3. 파이참 사용하기 파이참은 파이썬과 장고개발에 도움을 주는 통합개발환경이다. https://www.jetbrains.com/ko-kr/pycharm/download/#section=mac 다운로드 PyCharm: JetBrains가 만든 전문 개발자용 Python IDE www.jetbrains.com 사이트에 들어가 자신의 환경에 맞는 dmg 파일을 다운로드하여 설치하면 된다. 어떤 dmg 파일을 설치해야하는지 모르겠다면 터미널에 uname -p 명령어를 실행하면 된다.i386 또는 x86_64라고 출력되면 intel을 다운로드하면되고 arm64가 출력되면 apple silicon 을 다운로드하면 된다. open 을 눌러 앞서 생성한 장고 프로젝트인 /Users//projects/mysite 를 선택한다. 파이참으로 장..