django 에 Comment 사용하기

django에 기본적으로 덧글(comments) 사용할수있는 템플릿을 제공하고 있다.
덧글 작성은 버전 1.6이전까지만 지원되고 1.6부터는 별도로 설치를 해야 사용가능하다.

현재 버전이 1.6이전이면 사용하는데는 문제가 없다.
프로젝트의 url.py 에서 아래의 url을 추가하자.
url(r'^comments/',include('django.contrib.comments.urls')),

그 다음 syncdb를 수행하면 테이블이 생성된다.
runserver로 실행을 해보면 아래와 같이 SITE_ID의 값이 없다고 나오는데
그런 경우 settings.py 를 열어 마지막 줄에 다음고 같이 추가를 한다.

settings.py
SITE_ID = 1

AttributeError at /XXXXX/

'Settings' object has no attribute 'SITE_ID'

사이트가 하나라면 값은 어떤걸 넣어도 상관이 없는것 같다.
여러개의 사이트를 운영하는 경우 사이트 아이디 값으로 유용하게 사용할 수 있다고 설명은 하고 있지만 대부분 사이트가 한개이니 기본값으로 사용하자.

그리고 settings.py 에 MIDDLEWARE_CLASSES 가 있는데 여기에 아래의 CSRF 미들웨어가 설정되어 있지않으면 CSRF 설정을 해야한다고 메세지가 뜬다.
'django.middleware.csrf.CsrfViewMiddleware',

별도로 수정하지 않았으면 문제는 없지만 혹시 csrf 설정을 하지 않으려고 막았다면 풀어야 한다.

django 사이트에서 comments 로 검색하면 검색된 항목의 첫번째에 사용 예제가 나온다.
자세한 사항은 사이트를 참고하고 간단하게 사용법을 알아보자.

예제 샘플)
{% load comments %}
{% get_comment_count for bookmarks.sharedbookmark shared_bookmark.id as comment_count %}
{% get_comment_list for bookmarks.sharedbookmark shared_bookmark.id as comment_list %}
{% for comment in comment_list %}
<div class="comment">
    <p><b>{{ comment.username }}</b>의 댓글입니다.</p>
    {{ comment.comment|escape|urlizetrunc:40|linebreaks }}
</div>
{% endfor %}
<p>댓글 갯수:{{ comment_count }}</p>
{% render_comment_form for bookmarks.sharedbookmark shared_bookmark.id %}

먼저 load comments 를 호출해야 사용이 가능하다.
get_comment_count는 덧글의 갯수를 가져오는 함수이고 위와 같이 찾을 데이터 모델, 모델의 아이디 값을 넘겨주면 된다.
그리고 값은 as 를 사용하여 comment_count라는 변수로 사용하기 위해 담았다.
get_comment_list 는 덧글 리스트를 받아오는 함수이다.
마지막으로 render_comment_form 은 덧글을 입력할수 있는 화면을 그려준다.

기본적으로 아무런 작업을 하지 않아도 템플릿에 있는 화면을 그대로 사용하기 때문에 코드양이 줄어든다. 화면이 마음에 들지 않는다면 별도로 구성을 할수 있다.

장고 사이트의 도움말을 보면 템플릿을 찾아가는 방법이 comments 폴더(장고에서 제공)를 찾게 되어있는데, 우리가 템플릿 폴더를 만들면 만들어진 템플릿 폴더를 먼저 찾는다.
즉, blog라는 app을 만들고 blog\templates\comments\list.html 파일을 만들면 된다.

Django will will look for the list.html under the following directories (for our example):
comments/blog/post/list.html
comments/blog/list.html
comments/list.html

템플릿 파일은 이미 만들어진 파일을 복사해서 일부 수정하는 방식으로 작업을 하자.
python\lib\site-packages\django\contrib\comments\templates\comments 폴더에 보면 템플릿 파일들이 위치해 있다.
여기 파일들을 복사해서 내 템플릿으로 복사해서 자신의 홈페이지에 맞게 수정하면 된다.

마지막으로 1.6버전을 사용한다면 아래의 사이트에 가서 추가로 설치를 하자.
사이트의 메뉴얼을 참고해서 작업을 해봐야 할것 같다. 현재는 1.5버전을 사용하고 있어 아래 링크의 사이트를 이용할 일은 없을것 같다.

댓글

댓글 쓰기

이 블로그의 인기 게시물

dtsrun 실행하기

[MS SQL] SP수행 시간 및 작업빈도 확인

Slug가 뭘까?