Threaded Commenting System In Django (Posted on December 29th, 2012)

The goal of this project is to store a tree (comment thread) in a database. There are several ways to do this and a good list of references can be found at Stack Overflow. The algorithm I'll be using to create our threaded commenting system is called a Materialized Path.

With the Materialized Path algorithm each comment will store the path to itself. For instance, if we post a comment to an empty thread the path to the comment is {1}. Since there is only a single node in the path this also signifies that it is a parent node. If we post a reply to the parent node that comment will have the path {1, 2}. If another reply is posted to the parent node it will have the path {1, 3}. Finally we can post a comment to our second reply (first child) and it will have the path {1, 2, 4}. Here is a visual example of what the output should look like:

  • Comment 1 - Path: {1}
    • Comment 2 - Path: {1, 2}
      • Comment 4 - Path: {1, 2, 4}
    • Comment 3 - Path: {1, 3}

Requirements

  • Django 1.4+
  • Postgresql 8.x or 9.x (7.x may work as well but I haven't tested)
  • DBarray (Enables Postgresql arrays in Django)

The Setup

First things first, let's create a Django project with a core app:

django-admin.py startproject comments_tutorial && cd coments_tutorial
python manage.py startapp core

Now that our file structure is all setup lets update the settings file to include our database information. If you haven't created a blank database for this project yet go ahead and create one now. Here is a copy of my settings file for reference. I've added django.contrib.humanize and core to my installed apps and also told Django where it can find my templates. If you have a certain way you like to setup your settings feel free to do so but make sure to add the proper installed apps.

The Model

Download DBarray and place it inside the comments_tutorial/core app folder. I chose to download the init file and place it in a file called dbarray.py. Then open up comments_tutorial/core/models.py and edit it to look like mine:

from django.db import models
from django import forms
from dbarray import IntegerArrayField

class Comment(models.Model):
    content = models.TextField()
    date = models.DateTimeField(auto_now_add=True)
    path = IntegerArrayField(blank=True, editable=False)
    depth = models.PositiveSmallIntegerField(default=0)
    
    def __unicode__(self):
        return self.content
    
class CommentForm(forms.ModelForm):
    #Hidden value to get a child's parent
    parent = forms.CharField(widget=forms.HiddenInput(
                            attrs={'class': 'parent'}), required=False)
    
    class Meta:
        model = Comment
        fields = ('content',)

I have set the path field to be uneditable, otherwise you'll run in to errors should you decide to update comments from inside the Django admin panel. You'll notice a hidden parent field in the form. This is used when replying to comments. This field will be populated with the parent comment's ID so that we can store the proper path of the child node. This idea may make more sense once we've implemented our view function.

Since this is the only model we will be using it is safe to run a syncdb and create the tables for our app

python manage.py syncdb

The View

Go ahead and open up comments_tutorial/core/views.py and edit it to look like mine:

from core.models import Comment, CommentForm
from itertools import ifilter
from django.shortcuts import render

def home(request):
    form = CommentForm(request.POST or None)
    
    if request.method == "POST":
        if form.is_valid():
            temp = form.save(commit=False)
            parent = form['parent'].value()
            
            if parent == '':
                #Set a blank path then save it to get an ID
                temp.path = []
                temp.save()
                temp.path = [temp.id]
            else:
                #Get the parent node
                node = Comment.objects.get(id=parent)
                temp.depth = node.depth + 1
                temp.path = node.path
                
                #Store parents path then apply comment ID
                temp.save()
                temp.path.append(temp.id)
                
            #Final save for parents and children
            temp.save()
    
    #Retrieve all comments and sort them by path
    comment_tree = Comment.objects.all().order_by('path')
                
    return render(request, 'index.html', locals())

First up we tell Django to fill out or create a blank CommentForm. If the request to the method is POST that means that we are creating a comment and need to handle that accordingly. If the comment form is valid then we create a python object but do not save it to the database just yet (this is where commit=False comes in to play).

The next step is to check if the comment that is being created is a parent comment or a reply to another comment. If no value was sent in to our hidden field that means the comment is a parent comment so we give it a blank path and save it. If a value was sent then grab that node's information and apply it to the newly created comment. The database will return the ID of that comment which we then add to the comment's path. You'll notice that this step will require two calls to the database. If you drop down to raw sql you can manage to do it one by prepending the row ID to the path array when selecting comments. However, to keep things simple and use the ORM, we will make two calls to the database.

The great part about this setup is that to get the full comment tree we simply need to order by "path". This will make it really easy to output in HTML. This works because every path is unique since the final element in the array is the comment's primary key.

The URL

Open comments_tutorial/comments_tutorial/urls.py and route the homepage to our home view we just created like so:

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    url(r'^$', 'core.views.home', name='home'),
)

The Template

In my settings file I told Django to look for the templates in a folder located at comments_tutorial/comments_tutorial/templates. So I just created the templates folder and have added a file called index.html to match our view's return method. Here is what your index.html file needs to look like (I have added some CSS to make it pretty):

{% load humanize %}
<!DOCTYPE html>
<html>
<head>
    <title>Comments Tutorial by Max Burstein</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script>
        $(document).ready(function(){
            $("#commenters").on("click", ".reply", function(event){
                event.preventDefault();
                var form = $("#postcomment").clone(true);
                form.find('.parent').val($(this).parent().parent().attr('id'));
                $(this).parent().append(form);
            });
        });
    </script>
    <style>
        a {
            font-weight: bold;
            color: #ff982c;
            text-decoration: none;
        }

        a:hover {
            text-decoration: underline;
        }
        
        #commenters {
            padding-left: 0px;
        }
        
            #commenters li {
                list-style-type: none;
            }
        
        .poster {
            font-size: 12px;
            color: #AAAAAA;
        }
        
        #postcomment ul {
            padding-left: 0px;
        }
        
            #postcomment ul li {
                list-style-type:  none;
                padding-bottom: 5px;
            }
                
        #postcomment label {
            width: 74px;
            display: inline-block;
        }
        
        .c {
            font-size: 14px;
            background: #0E0E0E;
            -webkit-border-radius: 10px;
            -moz-border-radius: 10px;
            border-radius: 10px;
            color: #FFFFFF;
            padding: 10px;
            margin-bottom: 10px;
        }
    </style>
</head>
<body>
    <h1>Comments Tutorial by Max Burstein</h1>
    <form id="postcomment" method="post" action="">
        {{form.as_p}}
        <p><input type="submit" value="Submit" /></p>
        {% csrf_token %}
    </form>
    <ul id="commenters">
    {% for c in comment_tree %}     
        <li id="{{c.id}}" class="c" style="margin-left:{{c.depth|add:c.depth}}em;">
            <p class="poster">Anonymous - {{c.date|naturaltime}}</p>
            <p>{{c.content}}</p>
            <p><a href="" class="reply">reply</a></p>
        </li>
    {% empty %}
        <li>There are currently no comments. You can be first!</li>
    {% endfor %}
    </ul>
</body>
</html>

The body of the HTML starts by loading our comment form so that we can post parent comments. Below that it loops through all comments currently in the database and outputs them in a hierarchical order based on the depth of a comment (a parent comment has a depth of 0). The Django Humanize module converts our stored time to how many seconds, minutes or hours ago it was posted, kind of like Reddit. If there are no comments then we simply print no comments.

At the top I've imported jQuery and wrote a simple script to place a comment box below any comment we want to reply to. When the reply button is clicked we prevent the page from going anywhere and then make a clone of the comment box from the top of the page. We then take the ID of the node we clicked reply on and put that value in the hidden parent field we created with our ModelForm up above. When we hit submit from this form the view will recognize that this comment has a parent and will store the proper path for this comment.

Source Code

If you've followed along this far then you've reached the end. Congrats! As an exercise go ahead and add in a comment rating system, such as upvoting and downvoting. This article on how not to sort by average rating is a good read.

I have posted my source code for this project on Github. Feel free to ask me any questions. I'd be happy to help.

Tags: Django

Comments:

  • enigma - 3 years, 6 months ago

    Thanks for the great tutorial. I just like to ask one question: Is is possible to build it using mysql.

    reply

  • Max Burstein - 3 years, 6 months ago

    If you're using MySQL you can use the CommaSeparatedIntegerField model type for your path. Then when you pull the data you can just split by "," and you'll have your path array. You'll also need to do the sorting in python since the database will treat the column as a string I believe, so 10 will come before 2. I've never tried it though so if you do end up trying it let me know how it works out for you.

    reply

  • enigma - 3 years, 6 months ago

    Hello again and thanks for the help. After a lot of attempts and debugging, i have changed the code like this: # views.py def home(request): form = CommentForm(request.POST or None) if request.method == "POST": if form.is_valid(): temp = form.save(commit=False) parent = form['parent'].value() if parent == "": # set a blank path then save it to get an ID temp.path = [] temp.save() # converting ID to int because save() gives a long int ID id = int(temp.id) temp.path = [id] else: # get the parent node node = Comment.objects.get(id = parent) temp.depth = node.depth + 1 s = str(node.path) temp.path = eval(s) #store parents path than apply comment ID temp.save() id= int(temp.id) temp.path.append(id) temp.save() # here i have reversed the order comment_tree = Comment.objects.all().order_by("-path") return render(request, 'index.html', locals()) in models.py i have just replaced IntegerArrayField with CommaSeparatedIntegerField as you've told me. Now it looks working, but could you try it, because i feel that i missed some thing

    reply

  • enigma - 3 years, 6 months ago

    Sorry for the mess

    reply

  • Max Burstein - 3 years, 6 months ago

    Yea I really need to implement markup for comments on here. Sorry about that. Drop me your e-mail on my contact form. I'll definitely take a look at using MySQL for this. It would be awesome if it was that simple of a fix.

    reply

  • buy instagram comments and likes - 1 year, 1 month ago

    hi was just seeing if you minded a comment. i like your website and the thme you picked is super. I will be back.

    reply

  • Schlüsseldienst Berlin - 1 year, 1 month ago

    i really like this article please keep it up.

    reply

  • Massage - 1 year, 1 month ago

    Essentially, massage remedy turns Over sympathetic stressed system, and turns Around the parasympathetic method. Thus, it relaxes our bodies and minimizes neuromuscular issues.

    reply

  • Men's Fashion - 1 year, 1 month ago

    Acquiring gents fashion tips are very important to increase any part of your attire. You is not going to believe the consequence what you might be wearing has on you and the ones around an individual, you can feel more confident and be appealing to be able to others.

    reply

  • Men’s Fashion - 1 year, 1 month ago

    In the recent write-up on gents fashion and also grooming no-no's at the job, they covered sets from backpacks to be able to comb-overs. Below are a few more gents fashion don'ts My partner and i thought have been missing from your list:

    reply

  • Shoes & Footwear - 1 year, 1 month ago

    Many mom and dad always choose the best garments and toys for babies. Nonetheless, most mom and dad neglect the feet. All babies if they start to be able to walk will be needing a couple of kid's child shoes.

    reply

  • Massage - 1 year, 1 month ago

    There are various types of massage, each making use of their own benefits to ease stress, pain or perhaps enhance general wellbeing. Massage can be an ancient fine art with several variations with regards to the country regarding origin.

    reply

  • Life Insurance Calgary - 11 months, 1 week ago

    Having read this I believed it was very enlightening. I appreciate you spending some time and energy to put this article together. I once again find myself personally spending a significant amount of time both reading and posting comments. But so what, it was still worth it!

    reply

  • Anonymous - 1 year, 6 months ago

    I bot

    reply

  • enigma - 3 years, 6 months ago

    Did you recieve my email

    reply

  • Max Burstein - 3 years, 6 months ago

    Yes I did. I sent off a response a few days ago. If you haven't received the response let me know and I'll resend it.

    reply

  • Andrew - 3 years ago

    Well I usually just grab code from blog posts and move on, but I have to comment here...

    This is some seriously good work and slick code. I ran into the issue of threaded comments last night and was unable to think of a good solution due to my coding inexperience. You sir have saved me a LOT of trouble with this code.

    Seriously. You're freaking awesome. Keep it up.

    • Andrew

    reply

  • Mahesh - 2 years, 11 months ago

    Thanks a lot

    reply

  • kannor - 2 years, 5 months ago

    Awesome post. Reading the source I have realised the application should work perfectly without the "path" model field. Since the comments can be arranged by "id" field. Can you please let me know some other use of the "path" field. Thank you.

    reply

  • Max Burstein - 2 years, 5 months ago

    You only need the path field if you want to make the comments threaded (can reply to specific comments). If you want to do Facebook style comments then you absolutely don't need the path field.

    You could get away with doing threaded comments without the path field by using Postgres' recursive calls to build out a path as long as you have the parent id. I know at one point Disqus used this technique. I find the path array much simpler as it also allows you to use the Django ORM and keeps your code base more uniform.

    reply

  • get more followers on twitter - 1 year, 1 month ago

    Good day I discovered your web blog around blunder after i ended up being wanting bing to get this acne dilemma, Most people must say your web blog is certainly handy Most people on top of that like the planning, it is really unbelievable!. Most people don’t have phase now to fully analysis your special site but I kept it and on top of that involve your special RSS OR ATOM AND ALSO ATOM rss or atom provides nourishment to. Soon we will be backside a day or even just couple of. thanks a lot to get a great webpage.

    reply

  • youtube subscriptions - 1 year, 1 month ago

    Hi I ran across your site by mistake when my partner and i continues to be searching for yahoo relating to this acne difficulty, My wife and i must say your site is totally helpful My wife and i moreover love the particular type, the particular great!. My wife and i don’t support the instant currently to be able to entirely analyze the particular site but We've publication noticeable it and moreover raise the ACTUALLY BASICALLY SYNDICATION nourishes. I will be once more in a evening or possibly a number of. many thanks to acquire a great internet site.

    reply

  • Threading - 2 years, 5 months ago

    just wanna comment on this one that its really well written and I enjoyed reading this

    reply

  • Anonymous - 2 years, 3 months ago

    I think you could save one DB operation by not saving the current comment in the path, for example:

    comment_1.path = (0) (its child) comment_2.path = (0,1) (just the get the parent's path and append the parent's id) (child of 2) comment_3.path = (0,1,2) (just the get the parent's path and append the parent's id)

    An item doesn't have to have itself in its own path, does it? Otherwise seems like a good solution I'm going to use with that little modification

    reply

  • Anonymous - 2 years, 3 months ago

    Oops, my bad! Gave it a little more thought and understood that without having yourself in your own path you will not be able to sort 1st level comments by path in the right order.

    Sorry, thanks!

    reply

  • Max Burstein - 2 years, 3 months ago

    You can definitely do it without having to do the extra save if you break out in to raw SQL. If you want to use the ORM it ends up being easier to just do the extra save. In the raw SQL you'd essentially just append the ID to the path array and then run the order by path sort. Not sure what the speed difference is like. I suppose if you were more write heavy then this could be a good approach.

    reply

  • Anonymous - 2 years, 1 month ago

    Just chanced upon this. You can use natsorted in python for sorting the code.

    reply

  • yolo - 1 year, 7 months ago

    you sir, are a bawse.

    pls keep making things

    get_money(me)

    swag

    yolo

    reply

  • Anthony Okafor - 1 year, 5 months ago

    With this writeup you really saved me loads of time. Thanks a bunch!

    reply

  • Anonymous - 1 year, 5 months ago

    I have a problem, when I hit the submit button the parent comment is copied to the children. From what I understood it's the javascript that does this. Can someone tell me how to remove that effect? Namely, just post child comments without reporting the content of the parent? Thanks in advance

    reply

  • Anonymous - 1 year, 5 months ago

    indeed

    reply

  • Anonymous - 1 year, 5 months ago

    not working for me

    forms are messed up

    reply

  • showbiz news - 1 year, 4 months ago

    I have read a few of the articles on your website now, and I really like your style of blogging. I added it to my favorites blog site list and will be checking back soon. Please check out my site as well and let me know what you think.

    reply

  • and - 1 year, 5 months ago

    Hello!

    reply

  • place - 1 year, 5 months ago

    Hello!

    reply

  • viagra - 1 year, 5 months ago

    Hello!

    reply

  • kyle - 1 year, 1 month ago

    hello!

    reply

  • JOHN - 4 months, 1 week ago

    <a href="http://www.happyvalentinesdaysms2016.com/2016/04/happy-earth-day-2016-whatsapp-status-images.html">Earth Day 2016</a> <a href="http://www.happyvalentinesdaysms2016.com/2016/04/happy-earth-day-2016-whatsapp-status-images.html">Happy Earth Day 2016 Status Wishes Greetings</a> <a href="http://www.happyvalentinesdaysms2016.com/2016/04/happy-earth-day-2016-whatsapp-status-images.html">Happy Earth Day 2016 Whatsapp Status, Images, Wishes, Quotes</a>

    reply

  • pou gratis - 1 year, 4 months ago

    i read a lot of stuff and i found that the way of writing to clearifing that exactly want to say was very good so i am impressed and ilike to come again in future..

    reply

  • hill climb racing hack - 1 year, 4 months ago

    It proved to be Very helpful to me and I am sure to all the commentators here!

    reply

  • Walter Goedecke - 1 year, 3 months ago

    From a beginner Django user, how would you simplify your nested comments system to using the default SQLite3? I want to understand the recursive aspect, then apply the method to my website, which is currently SQLite3, but I may move to MySQL.

    Thanks, Walter

    reply

  • best custom essay reviews - 1 year, 3 months ago

    You are given good points to us that is the good tips and most inspirational points to us so your blogs are very useful to all peoples best cutom essay reviews for showing throught my sites.

    reply

  • instagram buy followers - 1 year, 2 months ago

    Positive site, where did u come up with the information on this posting? I'm pleased I discovered it though, ill be checking back soon to find out what additional posts you include.

    reply

  • how to get comments on instagram - 1 year, 2 months ago

    Thanks for posting this info. I just want to let you know that I just check out your site and I find it very interesting and informative. I can't wait to read lots of your posts.

    reply

  • Mike - 1 year, 2 months ago

    Hi, what is the price? We want to buy comments for out new django projects.

    reply

  • instant followers - 1 year, 1 month ago

    Super-Duper site! I am Loving it!! Will come back again, Im taking your feed also, Thanks.

    reply

  • Software Testing Training in Chennai - 1 year, 1 month ago

    informative One. Thanks.

    reply

  • dissertations.superiorpapers.com - 1 year, 1 month ago

    Who want this article to visit they can use this instantly, thank you very much I feel very happy to learn more and more keep it up in the same way. It is very good informative site I prefers it.

    reply

  • Currency Trading - 1 year, 1 month ago

    People from all walks of life have traded currencies and nobody's excused from it. Even if a person is unaware of it, he might have traded currencies without realizing.

    reply

  • Business Finance - 1 year, 1 month ago

    One of the reasons Canadian business owners and their mgmt teams wrestle with financing tech assets revolves around their belief that these assets both operate differently than other business assets, and in some cases, i. e. software, are even intangible.

    reply

  • Debt - 1 year, 1 month ago

    If you are wondering about the Best Ways to Get Rid of Debt then you must most efficiently go in for debt settlement programs provided by debt relief networks.

    reply

  • Business Finance - 1 year, 1 month ago

    Business finance in Canada seems to come with a lot of worrying these days. Is that really necessary? Not if you're financing cash flow needs properly. The benefit? Your business simply is now able to ' take off '. Let's dig in.

    reply

  • Advertising - 1 year, 1 month ago

    TV and Radio Media advertising have lately seen a huge upsurge in demand. Advertisers of all types, irrespective of being big or small are betting hard on at least one of these media types for their advertising campaigns.

    reply

  • green smart living - 1 year, 1 month ago

    Such intelligent work on the subject and ideal way of writing here. I am really impressed! This post is a helpful overview of the particular topic and very actionable. Interesting approach!

    reply

  • read more - 1 year ago

    Your current tunes can be remarkable. You've got a number of quite accomplished musicians. My spouse and i would like anyone the top involving good results. <a href="http://www.freedebtmanagementtips.com/">read more</a>

    reply

  • Pykazamberi28 - 1 year ago

    I'm curious to find out what blog system you are using? I'm experiencing some small security issues with my latest blog and I would like to find something more risk-free. Do you have any recommendations? A person necessarily lend a hand to make seriously posts I'd state. That is the very first time I frequented your website page and thus far? I amazed with the analysis you made to create this particular put up incredible. Excellent task!

    reply

  • Kesehatannya - 1 year ago

    I don't know whether it's just me or if perhaps everyone else encountering problems with your website. It appears like some of the text in your content are running off the screen. Can someone else please comment and let me know if this is happening to them too? This could be a problem with my web browser because I've had this happen previously. Appreciate it Your means of telling everything in this article is genuinely fastidious, all be capable of easily know it, Thanks a lot.

    reply

  • Sehat Sehat Hidupku - 1 year ago

    WOW just what I was searching for. Came here by searching for <Meta keyword of Target site we don't know yet> Thank you for sharing your info. I really appreciate your efforts and I am waiting for your further write ups thanks once again. Howdy! Do you know if they make any plugins to safeguard against hackers? I'm kinda paranoid about losing everything I've worked hard on. Any tips?

    reply

  • youtube subscribers - 1 year ago

    Your website is really cool and this is a great inspiring article. Thank you so much.

    reply

  • free youtube views - 1 year ago

    Thanks for sharing the info, keep up the good work going.... I really enjoyed exploring your site. good resource...

    reply

  • free youtube subscribers - 1 year ago

    I read that Post and got it fine and informative.

    reply

  • youtube views - 1 year ago

    New web site is looking good. Thanks for the great effort.

    reply

  • Puja Kumari - 1 year ago

    Thanks for post this helpful post - Please visit for More information about: http://www.top9th.in/packers-and-movers-pune/ http://www.top9th.in/packers-and-movers-noida/ http://www.top9th.in/packers-and-movers-chennai/ http://www.top9th.in/packers-and-movers-kolkata/ http://www.top9th.in/packers-and-movers-ahmedabad/ http://www.top9th.in/packers-and-movers-surat/

    reply

  • Puja Kumari - 1 year ago

    Thanks for Nice and Informative Post. This article is really contains lot more information about This Topic http://www.top9th.in/packers-and-movers-bangalore/ http://www.top9th.in/packers-and-movers-hyderabad/ http://www.top9th.in/packers-and-movers-mumbai/ http://www.top9th.in/packers-and-movers-delhi/ http://www.top9th.in/packers-and-movers-gurgaon/ http://www.top9th.in/

    reply

  • Mansi Kher - 4 months, 2 weeks ago

    Very interesting blog, may be beneficial for me and who had already visited this page. <a href="http://mansikher.in/">http://mansikher.in</a> <a href="http://priyasen.in/">http://priyasen.in</a>

    reply

  • Mansi Kher - 4 months, 2 weeks ago

    http://mansikher.in/ http://priyasen.in/

    reply

  • Phuong - 4 months, 2 weeks ago

    I really thank the author of this article, the article has great significance for me, it just leads me to do better things for this life. Very meaningful, thank you very much, wish you happy.Viral Loop Review best ultimate viral wordpress them ViralLoop Review tool Viral Loop Free - Viral Loop Bonus

    reply

  • West Bengal Madhyamik Result - 4 months, 2 weeks ago

    <a href="http://westbengalmadhyamikresult.in/" target="_blank">West Bengal Madhyamik Result</a>

    <a href="http://westbengalhighersecondaryresult.in/" target="_blank">West Bengal Higher Secondary Result</a>

    <a href="http://12thresultdate.in/west-bengal-12th-hsc-result-2015-wbresults-nic-in/" target="_blank">West Bengal 12th Result</a>

    <a href="http://10thresultdate.in/west-bengal-madhyamik-result/" target="_blank">West Bengal Madhyamik Result</a>

    <a href="http://12thresultinfo.in/west-bengal-12th-result-2015-wbresults-nic-in/" target="_blank">West Bengal 12th Result</a>

    <a href="http://10thresultinfo.in/west-bengal-madhyamik-result-2015-www-wbresults-nic-in/" target="_blank">West Bengal Madhyamik Result</a>

    reply

  • West Bengal 12th Result - 4 months, 2 weeks ago

    <a href="http://westbengalmadhyamikresult.in/">West Bengal Madhyamik Result</a>

    <a href="http://westbengalhighersecondaryresult.in/">West Bengal Higher Secondary Result</a>

    <a href="http://12thresultdate.in/west-bengal-12th-hsc-result-2015-wbresults-nic-in/">West Bengal 12th Result</a>

    <a href="http://10thresultdate.in/west-bengal-madhyamik-result/">West Bengal Madhyamik Result</a>

    <a href="http://12thresultinfo.in/west-bengal-12th-result-2015-wbresults-nic-in/">West Bengal 12th Result</a>

    <a href="http://10thresultinfo.in/west-bengal-madhyamik-result-2015-www-wbresults-nic-in/">West Bengal Madhyamik Result</a>

    reply

  • Packers and Movers - 4 months, 1 week ago

    Packers and Movers Hyderabad go to:- http://www.movers5th.in/packers-and-movers-hyderabad/ Packers and Movers Bangalore go to:- http://www.movers5th.in/packers-and-movers-bangalore/ Packers and Movers Pune go to:- http://www.movers5th.in/packers-and-movers-pune

    reply

  • Packers and Movers - 4 months, 1 week ago

    Packers and Movers Mumbai go to:- http://www.movers5th.in/packers-and-movers-mumbai/ Packers and Movers Delhi go to:- http://www.movers5th.in/packers-and-movers-delhi/ Packers and Movers Gurgaon go to:- http://www.movers5th.in/packers-and-movers-gurgaon/

    reply

  • Packers and Movers - 4 months, 1 week ago

    Packers and Movers Chennai go to:- http://www.movers5th.in/packers-and-movers-chennai/ Packers and Movers Noida go to:- http://www.movers5th.in/packers-and-movers-noida/ Packers and Movers Navi Mumbai go to:- http://www.movers5th.in/packers-and-movers-navimumbai/ Packers and Movers Thane go to:- http://www.movers5th.in/packers-and-movers-thane/ Packers and Movers Ghaziabad go to:- http://www.movers5th.in/packers-and-movers-ghaziabad/ Packers and Movers Faridabad go to:- http://www.movers5th.in/packers-and-movers-faridabad/

    reply

  • Packers and Movers - 4 months, 1 week ago

    Packers and Movers in Pune go to:- http://www.moveby5th.in/packers-and-movers-pune.html Packers and Movers in Bangalore go to:- http://www.moveby5th.in/packers-and-movers-bangalore.html Packers and Movers in Hyderabad go to:- http://www.moveby5th.in/packers-and-movers-hyderabad.html Packers and Movers in Mumbai go to:- http://www.moveby5th.in/packers-and-movers-mumbai.html Packers and Movers in Gurgaon go to:- http://www.moveby5th.in/packers-and-movers-gurgaon.html Packers and Movers in Delhi go to:- http://www.moveby5th.in/packers-and-movers-delhi.html

    reply

  • Mansi Kher - 4 months, 1 week ago

    Very interesting blog, may be beneficial for me and who had already visited this page. <a href="http://mansikher.in/">Mumbai Escorts Service</a> <a href="http://mansikher.in/">Mumbai Escorts</a> <a href="http://mansikher.in/">Mumbai Escorts Agency</a> <a href="http://mansikher.in/">Independent Escorts In Mumbai</a> <a href="http://mansikher.in/">Mumbai Independent Escorts</a> <a href="http://mansikher.in/">Mumbai Escorts Service</a> <a href="http://mansikher.in/">Escorts In Mumbai</a> <a href="http://mansikher.in/">Mumbai Female Escorts</a> <a href="http://mansikher.in/">Mumbai Escort Service</a> <a href="http://mansikher.in/">Mumbai Escort</a> <a href="http://priyasen.in/">Mumbai Escorts Service</a> <a href="http://priyasen.in/">Mumbai Escorts</a> <a href="http://priyasen.in/">Mumbai Escorts Agency</a> <a href="http://priyasen.in/">Independent Escorts In Mumbai</a> <a href="http://priyasen.in/">Mumbai Independent Escorts</a> <a href="http://priyasen.in/">Mumbai Escorts Service</a> <a href="http://priyasen.in/">Escorts In Mumbai</a> <a href="http://priyasen.in/">Mumbai Female Escorts</a> <a href="http://priyasen.in/">Mumbai Escort Service</a> <a href="http://priyasen.in/">Mumbai Escort</a> <a href="http://mansikher.in/">Mumbai Escorts</a> <a href="http://priyasen.in/">Mumbai Escort</a> <a href="http://mansikher.webnode.in/">Mumbai Escorts </a> <a href="http://mansirai.webnode.com/">Mumbai Vip Escorts</a> <a href="http://taniyarai1.jimdo.com/">Mumbai Escort Girls</a> <a href="http://taniyarai.jimdo.com/">Escort Mumbai</a> <a href="http://teenamalik.webstarts.com/">Mumbai Call Girls</a>

    reply

  • JOHN - 4 months, 1 week ago

    <a href="http://www.happyvalentinesdaysms2016.com/2016/04/happy-earth-day-2016-whatsapp-status-images.html">Earth Day 2016</a> <a href="http://www.happyvalentinesdaysms2016.com/2016/04/happy-earth-day-2016-whatsapp-status-images.html">Happy Earth Day 2016 Status Wishes Greetings</a> <a href="http://www.happyvalentinesdaysms2016.com/2016/04/happy-earth-day-2016-whatsapp-status-images.html">Happy Earth Day 2016 Whatsapp Status, Images, Wishes, Quotes</a>

    reply

  • michael-kors - 4 months ago

    Miranda Kerr Has Perfectly Simple Supermodel Shoe Style http://www.giuseppezanotti.us.org Women Giuseppe Zanotti Sneakers - giuseppe zanotti shoes My love for handbags started at a young age, and it began with lusting, not owning. I used to go to the mall with my friends in junior high, and while they were in Limited Too, I was in department stores, looking at bags. http://www.coachfactoryoutlet.org Coach Outlet - Hot Deals, Reviews and Guides about Coach Produtcs 2016 michael kors outlet so yes, http://www.michael-korsoutletonline.us.com first http://www.coachfactoryoutletonlineco.us.com order http://www.oakleysunglassesok.us.com of business: http://www.oakleysunglassesoutlets.us.org we've got http://www.raybansunglasses.eu.com a lot http://www.ralphlaurenpolos.us.com of http://www.michaelkorsoutlet.us.com Rihanna http://www.coach-factoryoutletstore.us.com for http://www.louis-vuittonoutletonline.us.com you http://www.michaelkorsoutletonline.us.com this http://www.valentinoshoesoutlet.com week, and http://www.valentinooutlet.us.org in one http://www.sacsportefeuilles.com instance,http://www.louisvuittonhandbag.org she is http://www.oakleysunglassesstore.us.com actually http://www.coachoutletstore.us.com carrying http://www.coachfactoryoutletinc.us.com something http://www.coachfactoryoutletusa.com other http://www.michaelkorsoutletonlines.us.com than Dior.http://www.michaelkorsoutletinc.us.com (Nobody http://www.michael-korsoutletonline.com tell http://www.michaelkorsoutlet.eu.com Dior's PR http://www.michaelkorsfactoryoutletonline.us.com department.http://www.oakleyoutlet.name oakley outlet) Is http://www.oakleystoresonline.us.com there http://www.truereligionoutletonline.in.net any http://www.marcbymarcjacobs.us.org

    coach factory outlet http://www.coachfactoryoutlet-stores.us.com selling http://www.sacportefeuillespascher.com point than Rihanna? http://www.coach-factoryoutletstores.us.com No, http://www.michaelkorsfactorystore.us.com no there is http://www.north-faceoutlet.us.com not. http://www.coachfactoryoutlet-stores.com Second http://www.ray-banpascher.com order http://www.sacblanc.com of http://www.guccisneakers.us.com business: http://www.raybanstoresonline.us.com celebrities http://www.raybansunglassesclearance.com are http://www.coachoutletusaonline.us.com keeping http://www.tomsshoe.us.com it extra http://www.true-religions.us.com casual http://www.oakleygoggles.us.com this http://www.portefeuillepascher.com week. http://www.coachoutletonline.us coach outlet online http://www.valentino.com.co Sweatpants http://www.valentinoshoes.com.co at http://www.coachfactoryoutletstore.us.com the http://www.coachoutletstores.net airport.http://www.oakleyvaults.us.com Pajamas http://www.pradaoutletstore.us.com at http://www.michaelkorssoutlet.us.com award http://www.christianlouboutinsale.us.com show.http://www.valentinoshoeswebsite.com It http://www.christian-louboutinshoes.us.com makes http://www.beatsbydrdreheadphone.us.com Here's a photo of Dakota Fanning http://www.michaelkors-outletonline.us.com carrying http://www.michaelkorshandbagsoutlet.us.com a mini http://www.beatsbydreheadphone.us.com Givenchy http://www.louboutinshoes.us.com bag around http://www.christianlouboutinoutletonline.us.com the http://www.coachstores.us.com East http://www.coachoutletonlinesale.us.com Village.

    michael kors http://www.onlinemichaelkorsoutlet.us.com Someone http://www.truereligionoutlet.us.com clearly took this http://www.coachoutletstorefactory.us.com on http://www.ray-bansunglasses.it their http://www.cheapsunglassesoakley.us.com cell http://www.coach-factorystoreonline.us.com phone and http://www.michaelkorsoutletco.us.com sold to our http://www.tomsshoesoutletonline.in.net photo http://www.truereligionoutletco.us.com service. http://www.truereligionjeans.us.org Dakota sees http://www.rayban-sunglasses.org you http://www.redbottomshoe.us.com trying to take discreet hip http://www.valentinorockstudshoes.us.com shots http://www.valentinoshoesoutlet.us.com with http://www.sacenpaille.com your http://www.beatsbydrdre.us.com smart phone,http://www.ray-bansunglasses.org ray ban sunglasses aspiring http://www.louboutinoutlet.us.com paparazzo,http://www.modeldesac.com and does not http://www.clshoesoutletonline.com approve. http://www.raybanoutletstoreonline.com I http://www.tomsoutlet.us.com wear a http://www.louboutinshoes.us.com lot of http://www.christianlouboutinoutlet.us.com black, http://www.hermesbirkinoutlet.us.com dye http://www.hermesbag.us.com my hair http://www.wwwcoachoutlet.us.com bright http://www.coachfactory.name colors http://www.raybansunglasse.us.com and http://www.coachoutletstoresfactory.com coach factory outlet sale don't own a http://www.bracelethermes.com single http://www.factorystoreonline.com fashion-related http://www.coachpurses.us.com thing http://www.outletgucci.us.com that http://www.coachfactory-storeoutlet.us.com would http://www.valentinoshoes.us.org qualify http://www.louisvuittonoutlet-online.us.com as http://www.louisvuittonlv.us.com even http://www.michaelkorsoutletsite.us.com vaguely http://www.michaelkorshandbags.us.com pastel, http://www.valentinorockstud.us.com but http://www.louisvuittonpurses.us.com somehow

    louis vuitton http://www.bananelouisvuitton.com they're http://www.oakleysunglasse.us.com the only http://www.pascherhermes.com shades that feel http://www.womens-jewelry.com consistently coright on http://www.valentinooutlet.org my http://www.valentinoshoes.us.com nails. http://www.oakleyssunglassesoutlet.us.com Even http://www.ray-bansunglassesclearance.com black, http://www.raybanoutlet.org my http://www.raybanstoreonline.us.com favorite http://www.raybansunglassesoutlets.com color http://www.cheapoakleyssunglasses.us.com for http://www.cheapoakleysunglasses.com.co everything http://www.tomsoutlet.in.net else http://www.abercrombieoutletonline.us.com I put on my http://www.ralphlauren-outlet.us.com body, doesn't http://www.poloralphlaurenoutlet.us.com fit http://www.raybansoutlet.us.com all http://www.coach-factorystoreoutlet.us.com the http://www.wwwcoachfactoryoutlet.com time, http://www.coach-factorystore.us.com but http://www.coach-factoryonline.us.com I've http://www.coach-outletfactoryonline.us.com never had a http://www.outlet-michaelkors.us.com baby http://www.raybanssunglasses.us.com blue http://www.polosralphlauren.us.com or http://www.sacportefeuilleeu.com mint http://www.marcjacobsoutlet.us.org green manicure I've regretted.http://www.marcbymarcjacobs.us Pale nails have been an outlier in my life for years. http://www.marcbymarcjacobsoutlets.com http://www.chiflatironsofficial.com

    Katherine Callaghan 6546 Comments

    Well, we’ve made it. Here’s to another week marked off our calendar and another fun-filled weekend to look forward to. While the sales were scarce this week, we searched the internet high and low to bring you the best-priced bags we could find.

    reply

  • tamil nadu election results - 3 months, 3 weeks ago

    hi it is very nice thanking you <a href="http://tamilnaduelectionresults2016.com/">Tamil Nadu Election Results 2016</a>

    reply

  • fgvhn - 3 months, 3 weeks ago

    Tripazon Vacation Network, is created by Roger Rutter who is the president and TOP DOG of Accommodations 360, which can be the father or mother company to be able to Tripazon. Mr. Rutter provides found an original way to supply his associates exclusive cost-effective vacation bargains, where rates only $69 could easily get you on a cruise or even a measly $150 can easily cover any multi-day getaway. <b><a href="http://www.activetravelnetwork.org">activetravelnetwork.org</a></b>

    reply

  • fgvhn - 3 months, 3 weeks ago

    http://www.teachingfinance.org On one other hand, even together with limited experience of business it indicates you could be an excellent teacher to be able to any pupil who wants business Language. If you might be teaching fund English as an example, the most the help they are going to need could be the English you are already aware, for the rest there are usually specialist guides and dictionaries.

    reply

  • french open 2016 - 3 months, 3 weeks ago

    <a href="http://www.frenchopen2016-live.org/">French Open 2016 live</a> <a href="http://www.frenchopen2016-live.org/2016/02/french-open-2016-match-details-schedule-fixtures.html">Roland Garros 2016 Schedule</a> <a href="http://www.frenchopen2016-live.org/2016/02/french-open-2016-match-details-schedule-fixtures.html">French Open 2016 Schedule</a>

    reply

  • french open 2016 - 3 months, 3 weeks ago

    <a href="http://www.frenchopen2016-live.org/">French Open 2016 live</a> <a href="http://www.frenchopen2016-live.org/2016/02/french-open-2016-match-details-schedule-fixtures.html">Roland Garros 2016 Schedule</a> <a href="http://www.frenchopen2016-live.org/2016/02/french-open-2016-match-details-schedule-fixtures.html">French Open 2016 Schedule</a>

    reply

  • joeyjr - 3 months ago

    I really thank the author of this article, the article has great significance for me, it just leads me to do better things for this life. Very meaningful, thank you very much, wish you happy.webinar jeo Complete Webinar Software webinar jeo review best webinar software webinar jeo reviews - webinar jeo review and bonus - Home Pagewebinar jeo bonus - webinar jeo free - webinar jeo dowload- webinar jeo review- webinar jeo review- webinar jeo review- webinar jeo review- webinar jeo review- webinar jeo review

    Complete Webinar Software

    reply

  • french open 2016 - 2 months, 3 weeks ago

    <a href="http://www.frenchopen2016-live.org/">French Open 2016 Final</a> <a href="http://www.frenchopen2016livestreaming.com/">French Open final</a> <a href="http://www.frenchopen2016livestreaming.com/">French Open Women Final</a>

    reply

  • williama - 2 months, 2 weeks ago

    Ladies don't like males that may be read just like a guide. Like a guy, you have to possess some shocks which can make you appealing <a href="http://www.datinguniverse.sitew.org/">look at here now</a>.

    reply

  • Nisha Khan - 2 months, 1 week ago

    I am so delighted to be here and this is really such a marvelous post which contained so much informative stuff. Thanks for share this with us. Call Girls in Manali

    reply

  • tamil actress hot photo - 1 month, 4 weeks ago

    very nice.

    <a href="http://newactressphotos.simplesite.com/">nushrat bharucha hot</a>

    reply

  • Sapna - 1 month, 2 weeks ago

    I really like this great post and your opinion, Thanks for share. <a href="http://www.escortsindelhie.in/"> Top Escorts in Delhi </a>

    <a href="http://www.dlfgurgaoncallgirls.com/call-girls-mg-road-gurgaon/"> Hot Call Girls In Gurgaon </a>

    <a href="http://www.thegurgaonescorts.com/"> Gurgoan Escorts Service </a>

    <a href="http://www.thegurgaonescorts.com/gurgaoncallgirls/"> Gurgaon Call Girls Service </a>

    reply

  • mumbai escorts girl - 1 month, 2 weeks ago

    Such a nice post ! great love to read this one.

    <a href="http://www.mumbaihotcollection.co.in" title="mumbai escorts girl"> mumbai escorts girl </a>

    <a href="http://www.ricies.in" title="call girls in mumbai"> call girls in mumbai </a>

    <a href="http://www.delhihotcollection.com" title="delhi escorts"> delhi escorts </a>

    <a href="http://www.royalhotcollection.in" title="mumbai escorts girl"> mumbai escorts girl </a>

    <a href="http://www.gurgaonhotcollection.com" title="xxx sex service"> xxx sex service </a>

    <a href="http://www.royalhotcollection.com" title="mumbai escorts girl"> mumbai escorts girl </a>

    <a href="http://www.rici.in" title="independent escorts in mumbai"> independent escorts in mumbai </a>

    <a href="http://www.mumbaihotcollection.com" title="mumbai escorts girl">mumbai escorts girl</a>

    reply

  • Anonymous - 1 month, 1 week ago

    صور بنات صوربنات

    reply

  • Anonymous - 1 month, 1 week ago

    صور بنات صوربنات

    reply

  • Independent Mumbai Escorts - 1 month, 1 week ago

    Welcome to Hot Kareena Mumbai escort agency featuring high class female escorts in Mumbai.

    http://www.kareenasingh.com/

    reply

  • Mumbai Escorts - 1 month, 1 week ago

    Welcome to Hot Kareena Mumbai escort agency featuring high class female escorts in Mumbai.

    <a href="http://www.kareenasingh.com/links.html/">Mumbai Escort</a> <a href="http://www.kareenasingh.com/links.html/">Independent Mumbai Escort</a> <a href="http://www.kareenasingh.com/">Escorts in Mumbai</a> <a href="http://www.kareenasingh.com/">Independent Mumbai Escorts</a>

    reply

  • Escorts in Mumbai - 1 month, 1 week ago

    Are you seeking an independent escort in Mumbai.

    http://www.purvikapoor.com/

    reply

  • Independent Mumbai Escort - 1 month, 1 week ago

    I am a hot and sexy Indian model girl from Mumbai and a young, beautiful and sexy Mumbai call girl.

    http://www.pallavirawal.co.in/

    reply

  • Mumbai Escort - 1 month, 1 week ago

    Ritika offering their sizzling Mumbai escorts service. she is beautiful independent escorts in Mumbai.

    http://www.ritikagupta.net/

    reply

  • Independent Mumbai Escorts - 1 month, 1 week ago

    Sofiya Khan offers independent Mumbai escorts services.

    http://www.sofiyakhan.com/

    reply

  • Mumbai Escorts Service - 1 month, 1 week ago

    Mumbai escorts and sexy call girls for you. Check out the hottest female escorts.

    http://www.snehasingh.com/

    reply

  • Mumbai Escorts Agency - 1 month, 1 week ago

    I am very sweet and charming Mumbai escorts girl who dreams about real, passionate sweet love.

    http://www.kimmumbaiescorts.com/

    reply

  • Independent Escorts in Mumbai - 1 month, 1 week ago

    Mumbai escorts services that are a well known escorts agency in Mumbai.

    http://www.passionmumbaiescorts.com/

    reply

  • memo - 1 month, 1 week ago

    تحميل برامج مواقيت الصلاة مواقيت الصلاة القاهرة مواعيد الصلاة

    reply

  • ledo - 1 month, 1 week ago

    برامج

    برنامج الاذان

    مواقيت الصلاه

    ماسنجر

    reply

  • Megha Verma - 1 month ago

    Reliable Independent Chennai Escorts Girl services offering by Megha verma, so just connect with me any time and goes to fun trip any time. http://www.meghaverma.co.in/

    reply

  • Aliya Ghosh - 1 month ago

    You have no girl friend don't worry because Aliya Ghosh is very sweet and working at Chennai Escorts Girl for every one so you can take a friendly behave service with me. <a href="http://www.meghaverma.co.in/">http://www.meghaverma.co.in/</a> <a href="http://www.aliyaghosh.co.in/">http://www.aliyaghosh.co.in/</a>

    reply

  • Simran Oberoi - 1 month ago

    Golden chance for meet with Sweta Dixit, because I am first time comes in Chennai and offering Chennai Escorts Girl Services, Escorts Girl in Chennai are always ready for complete your dreams.

    Chennai Escorts @ http://www.priyathakur.co.in/ Chennai Escort @ http://www.swetadixit.co.in/ Chennai Escorts Service @ http://www.simranoberoi.co.in/ Chennai Escorts Agency @ http://www.nisharai.co.in/ Escorts in Chennai http://www.payalsen.co.in/

    reply

  • amantur - 4 weeks, 1 day ago

    this is test

    reply

  • Ha Phuong - 3 weeks, 5 days ago

    This is my first time i visit here. I found so many interesting stuff in your blog especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all the enjoyment here! keep up the good work. thanks once again. E-commerce Firesale Review New Training Course QIC review Course about COPYWritting Marketer Live Review Social Media Tool Octosuite Review

    reply

  • JOHN - 2 weeks, 5 days ago

    nice one share man <a href="http://www.rakshabandhanimages2016.com/">Raksha Bandhan Images</a> <a href="http://www.rakshabandhanimages2016.com/">Raksha Bandhan 2016</a> <a href="http://www.rakshabandhanimages2016.com/">Happy Raksha Bandhan 2016</a>

    reply

  • kakalot - 2 weeks, 3 days ago

    ecommerce Firesale review

    reply

  • martingarix229 - 1 week, 2 days ago

    Easily, the article is actually the best topic on this registry related issue. I fit in with your conclusions and will eagerly look forward to your next updates. Just saying thanks will not just be sufficient, for the fantasti c lucidity in your writing. I will instantly grab your rss feed to stay informed of any updates. <a href='https://www.google.com'>facebook</a>

    reply

  • yakuza4d.com - 1 week ago

    She told me she just didn’t see herself as a leader and didn’t realize that other people at the school saw her as a leader as well http://dokterpoker.org/app/img/peraturan.html http://dokterpoker.org/app/img/jadwal.html http://dokterpoker.org/app/img/promo.html http://dokterpoker.org/app/img/panduan.html http://dokterpoker.org http://633cash.com/Games http://633cash.com/Pengaturan http://633cash.com/Daftar http://633cash.com/Promo http://633cash.com/Deposit http://633cash.com/Withdraw http://633cash.com/Berita http://633cash.com/Girl http://633cash.com/Livescore http://raksasapoker.com/app/img/peraturan.html http://raksasapoker.com/app/img/jadwal.html http://raksasapoker.com/app/img/promo.html http://raksasapoker.com/app/img/panduan.html http://raksasapoker.com/ http://yakuza4d.com/peraturan http://yakuza4d.com http://yakuza4d.com/home http://yakuza4d.com/daftar http://yakuza4d.com/cara_main http://yakuza4d.com/hasil http://yakuza4d.com/buku_mimpi http://dokterpoker.co/app/img/peraturan.html http://dokterpoker.co/app/img/jadwal.html http://dokterpoker.co/app/img/promo.html http://dokterpoker.co/app/img/panduan.html http://dokterpoker.co http://www.cintaberita.com http://www.cintaberita.com http://www.cintaberita.com http://www.cintaberita.com http://www.cintaberita.com http://beritamedannews.blogspot.com http://beritamedannews.blogspot.com http://beritamedannews.blogspot.com http://beritamedannews.blogspot.com http://beritamedannews.blogspot.com

    reply