Demo projects

Django-comments-xtd comes with three demo projects:

  1. simple: Single model with non-threaded comments
  2. simple_threads: Single model with threaded comments up to level 2
  3. multiple: Several models with comments, and a maximum thread level defined on per app.model basis.

You may want to have a look at the example sites dir in the repository.

Demo sites setup

The recommended way to run the demo sites is in its own virtualenv. Once in a new virtualenv, clone the code and cd into any of the 3 demo sites. Then run the install script and launch the dev server:

$ git clone git://github.com/danirus/django-comments-xtd.git
$ cd django-comments-xtd/django_comments_xtd/demos/[simple|simple_thread|multiple]
$ sh ./install.sh (to syncdb, migrate and loaddata)
$ python manage.py runserver
By default:
  • There’s an admin user, with password admin
  • Emails are sent to the console.EmailBackend

Simple demo site

The simple demo site is a project with just one application called articles with an Article model whose instances accept comments. The example features:
  • Comments have to be confirmed by email before they hit the database.
  • Commenters may request follow up notifications.
  1. Visit http://localhost:8000/ and look at your articles’ detail page.
  2. Try to post comments:
  • Logged out, to receive confirmation requests by email
  • Logged in, to get your comments accepted without requiring confirmation
  1. When adding new articles in the admin interface be sure to tick the box allow comments, otherwise comments won’t be allowed.

Simple with threads

The simple_threads demo site extends the simple demo functionality featuring:
  • Thread support up to level 2
  1. Visit http://localhost:8000/ and look at the first article page with 9 comments.
  2. See the comments in the admin interface too:
  • The first field represents the thread level.
  • When in a thread it mentions the parent comment.

Multiple demo site

The multiple demo allows users post comments to three different type of instances: stories, quotes, and project releases. Stories and quotes belong to the blog app while project releases belong to the projects app. The demo shows the blog homepage with the last 5 comments posted to either stories or quotes and a link to the complete paginated list of comments posted to the blog. It features:
  • Definition of maximum thread level on a per app.model basis.
  • Use of comments_xtd template tags (get_xtdcomment_count, render_last_xtdcomments, get_last_xtdcomments) and filter (render_markup_comment).
  1. Visit http://localhost:8000/ and take a look at the Blog and Projects pages.
  • The Blog contains Stories and Quotes. Instances of both models have comments. The blog index page shows the last 5 comments posted to either stories or quotes. It also gives access to the complete paginated list of comments.
  • Project releases have comments as well but are not included in the complete paginated list of comments shown in the blog.
  1. To render the last 5 comments the site uses:
  • The templatetag {% render_last_xtdcomments 5 for blog.story blog.quote %}
  • And the following template files from the demos/multiple/templates directory:
  • django_comments_xtd/blog/story/comment.html to render comments posted to stories
  • django_comments_xtd/blog/quote/comment.html to render comments posted to quotes
  • You may rather use a common template to render comments:
  • For all blog app models: django_comments_xtd/blog/comment.html
  • For all the website models: django_comments_xtd/comment.html
  1. To render the complete paginated list of comments the site uses:
  • An instance of a generic ListView class declared in blog/urls.py that uses the following queryset:
  • XtdComment.objects.for_app_models("blog.story", "blog.quote")
  1. The comment posted to the story Net Neutrality in Jeopardy starts with a specific line to get the content rendered as reStructuredText. Go to the admin site and see the source of the comment; it’s the one sent by Alice to the story 2.
  • To format and render a comment in a markup language, make sure the first line of the comment looks like: #!<markup-language> being <markup-language> any of the following options:
  • markdown
  • restructuredtext
  • linebreaks
  • Then use the filter render_markup_comment with the comment field in your template to interpret the content (see demos/multiple/templates/comments/list.html).

Table Of Contents

Previous topic

Introduction

Next topic

Tutorial

This Page