미리 페이지네이션을 구현하였고, 이제는 검색 기능을 구현하고자 한다. keyword와 page를 받고, 이를 get방식으로 호출하여 검색 기능을 구현한다.1. 템플릿 수정하기1) input과 button 추가하기 찾기 input과 button을 추가한다. 그리고 input 태그에 id로 search_kw, value로 keyword를 지정한다.2) form 추가하기 GET 방식으로 요청해야 하므로 method 속성에 "get"로 설정한다.kw와 page는 이전에 요청했던 값을 기억하고 있어야 하므로..
장고
728x90
반응형
앱의 크기가 커지면 커질수록 뷰 파일의 함수도 늘어나게 된다. 그러면서 원하는 기능을 찾기가 어려워지게 되고, 뷰 파일의 크기가 방대해지게 된다.그래서 views.py 파일을 분리하고자 한다. 이에 두가지 방법이 존재한다.첫번째 방법폴더를 하나를 만들어 views.py안에 있는 함수를 기능별로 분류하는 방법이다.내 경우 테이블이 두 개가 있다. 질문과 답변을 받아 데이터를 관리하는데, 이를 가지고 세 가지로 분류하고자 한다.파일명 기능 함수base_views.py기본관리index, detailquestion_views.py질문관리question_create, question_modify, question_deleteanswer_views.py답변관리answer_create, answer_modify, a..
게시판의 질문, 답변에는 누가 글을 작성했는지 알려주는 "글쓴이" 항목이 필요하다. Question과 Answer 모델에 "글쓴이"에 해당되는 author 속성을 추가하고자 한다.1. Question테이블에 속성 추가하기from django.db import modelsfrom django.contrib.auth.models import Userclass Question(models.Model): author = models.ForeignKey(User, on_delete=models.CASCADE) (... 생략 ...)User 모델 : django.contrib.auth 앱이 제공하는 사용자 모델로 회원 가입시 데이터 저장에 사용한 모델이다.CASCADE : 계정이 삭제되면 이 계정이 작..
회원가입 장고의 django.contrib.auth 앱을 이용하면 쉽게 구현할 수 있다. 이를 가지고 구현해보즈아!1.회원가입 템플릿 추가하기 // templates/navbar.html {% if not user.is_authenticated %} 회원가입 {% endif %} navbar.html 템플릿에 회원가입 템플릿을 추가해준다.2.URL 맵핑하기navbar.html 템플릿에 {% url 'common:signup' %} 태그를 추가했으므로 여기에 대응하는 URL 매핑 규칙을 추가해야 한다.// common\\urls.pyfrom django.urls import pa..
장고의 로그인, 로그아웃을 도와주는 앱은 django.contrib.auth 이다. 이를 가지고 구현해보즈아!하나의 웹 사이트에는 게시판 서비스, 블로그나 쇼핑몰과 같은 굵직한 단위의 앱들이 함께 있을 수 있기 때문에 공통으로 사용되는 기능인 로그인이나 로그아웃을 이 중의 하나의 앱에 종속시키는 것은 좋지 않다. 이러한 이유로 로그인 · 로그아웃을 "공통 기능을 가진 앱"이라는 의미의 common 앱에 구현하는 것이 좋다.1. common 앱 생성하기django-admin startapp common위의 명령어를 치면 디렉터리와 파일들이 자동으로 생성된다.// config\\settings.pyINSTALLED_APPS = [ 'common.apps.CommonConfig', ]그리고 나서 앱을 ..
페이지네이션은 보여주고자 하는 데이터가 많을 때 구현한다. 페이지네이션을 구현하기 위해서 데이터를 많이 생성하고자 한다.1. 가짜 데이터 만들기python manage.py shell데이터가 없으므로 장고 셸을 구동하여 데이터를 만들어주자!>>> from pybo.models import Question>>> from django.utils import timezone질문 데이터를 생성하기 위한 모듈을 임포트한다.for i in range(300):... q = Question(subject='테스트 데이터입니다:[%03d]' % i, content='내용무', create_date=timezone.now())... q.save()q변수를 선언할 때 shift+enter를 써서 내려쓰기를 ..
1. static 디렉터리//config\\settings.pySTATICFILES_DIRS = [ BASE_DIR / 'static',]스타일시트 파일은 장고의 스태틱 디렉터리에 저장해야 한다. config/settings.py 파일에 등록하여 사용한다.static이라는 디렉터리에 스타일시트 파일을 넣어야 하므로, static 폴더가 존재해야 한다. 이를 만들어준다.mkdir static2. 스타일 시트// static/style.csstextarea {width:100%;}input[type=submit] {margin-top:10px;}style.css 파일에는 상세화면에 적용할 스타일을 정의했다. 답변 등록시 사용하는 텍스트 창의 넓이를 100%로 하고 "답변등록" 버튼 상단에 10 픽셀의 ..
1. 폼 등록하기기본적으로 우리는 데이터를 주고 받을 때 form이용하여 받고는 한다. 이를 이용해서 장고에서 데이터 전달과정을 보고자 한다.// pybo\\question_detail.html{% csrf_token %}우리가 이전에 question을 등록했으므로 이에 대한 답변을 받기 위한 form을 만들어 준다. 그리고 이는 textarea에 적으면 button을 클릭하면 넘어가는 형식을 구현하였다.답변 저장을 위한 URL : form 태그의 action 속성에 {% url 'pybo:answer_create' question.id %}로 지정했다.{% csrf_token %} : 보안에 관련된 항목으로 form으로 전송한 데이터가 실제 웹 페이지에서 작성한 데이터인지를 판단하는 가늠자 역할을 한다..
728x90
반응형