freecomment,commentのtemplatetagの続き
- [Django]: Django FreeComment を使う
- /django/django_templates/flatpages/default.html
- /django/django_projects/website/urls.py
- /django/django_templates/comments
を参考に続けていきます。
まずは、生成されるHTMLを確認
<form action="/comments/postfree/" method="post"> <p><label for="id_person_name">ユーザ名:</label> <input type="text" id="id_person_name" name="person_name" /></p> <p><label for="id_comment">コメント:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p> <p> <input type="hidden" name="options" value="ip" /> <input type="hidden" name="target" value="9:1" /> <input type="hidden" name="gonzo" value="cdeb406a23d57cb482ab0009df790d8a" /> <input type="submit" name="preview" value="コメントをプレビュー" /> </p> </form>
で、formタグのactionに注目。
/comments/postfree/というURLになっている。
で、urls.pyを見てみるとないので以下を追加
(r'^comments/', include('django.contrib.comments.urls.comments')),
そして、POSTしてみる。
TemplateDoesNotExistと出てくる。
comments/free_preview.htmlがないようなのでTEMPLATE_DIRS以下に作る。
FreeComment 書き込みフォームを組み込む。を参考にファイルを作成。
で、POSTしてみる。
お〜、上にプレビュー、下は続けて編集できるようになっている。
次に、またPOST。
するとまた、TemplateDoesNotExist。
今度はcomments/posted.htmlがないようだけど、データはちゃんと保存されています。
"comments_freecomments"のテーブルを確認してください。
comments/posted.htmlはPOSTが終了しDBにデータが保存できたことを示すので適当に作成。
次は、POSTしたデータを表示できるようにします。
今回は、default.htmlに追加。
使うタグは
{% get_comment_list for [pkg].[py_module_name] [context_var_containing_obj_id] as [varname] (reversed) %}
です。
<h3>Comments</h3> {% get_free_comment_list for flatpages.flatpage flatpage.id as comment_list %} {% for comment in comment_list %} #{{ forloop.counter }} {{ comment.submit_date }} <p>{{ comment.person_name|escape }}</p> <p>{{ comment.comment|escape|urlizetrunc:40|linebreaks }}</p> {% endfor %}
{% get_free_comment_list %}でコメントデータを取得します。
あとは、for文で個数分表示します。
表示内容は、日付、名前、内容です。
これで、基本的にコメントの表示とPOSTができるようになります。
コメントされた件数を表示するには
{% get_comment_count for [pkg].[py_module_name] [context_var_containing_obj_id] as [varname] %}
です。
default/htmlには以下のようにすると表示されます。
{% get_free_comment_count for flatpages.flatpage flatpage.id as comment_count %} {{ comment_count }} Comment{{ comment_count|pluralize }}</a>
次は、flatpage+認証にしようかな。