def post_comment(request, next=None, using=None):
    """
    Post a comment.

    HTTP POST is required.
    """
    # Fill out some initial data fields from an authenticated user, if present
    data = request.POST.copy()
    if request.user.is_authenticated:
        data["user"] = request.user
    else:
        return CommentPostBadRequest("You must be logged in to comment")

    # Look up the object we're trying to comment about
    ctype = data.get("content_type")
    object_pk = data.get("object_pk")
    if ctype is None or object_pk is None:
        return CommentPostBadRequest("Missing content_type or object_pk field.")
    try:
        model = models.get_model(*ctype.split(".", 1))
        target = model._default_manager.using(using).get(pk=object_pk)
    except TypeError:
        return CommentPostBadRequest(
            "Invalid content_type value: %r" % escape(ctype))
    except AttributeError:
        return CommentPostBadRequest(
            "The given content-type %r does not resolve to a valid model." % \
                escape(ctype))
    except ObjectDoesNotExist:
        return CommentPostBadRequest(
            "No object matching content-type %r and object PK %r exists." % \
                (escape(ctype), escape(object_pk)))
    except (ValueError, ValidationError) as e:
        return CommentPostBadRequest(
            "Attempting go get content-type %r and object PK %r exists raised %s" % \
                (escape(ctype), escape(object_pk), e.__class__.__name__))

    # Construct the comment form
    form = comments.get_form()(target, data=data)

    # Check security information
    if form.security_errors():
        return CommentPostBadRequest(
            "The comment form failed security verification: %s" % \
                escape(str(form.security_errors())))

    # Check for next
    if not next:
        next = data.get("next")

    # If there are errors show the comment
    if form.errors:
        template_list = [
            "comments/%s/%s/form.html" % (model._meta.app_label, model._meta.module_name),
            "comments/%s/form.html" % model._meta.app_label,
            "comments/form.html",
        ]
        return render_to_response(
            template_list, {
                "comment": form.data.get("comment", ""),
                "form": form,
                "next": data.get("next", next),
            },
            RequestContext(request, {})
        )

    # Otherwise create the comment
    comment = form.get_comment_object()
    comment.ip_address = request.META.get("REMOTE_ADDR", None)
    if request.user.is_authenticated:
        comment.user = request.user

    # Signal that the comment is about to be saved
    responses = signals.comment_will_be_posted.send(
        sender=comment.__class__,
        comment=comment,
        request=request
    )

    for (receiver, response) in responses:
        if response == False:
            return CommentPostBadRequest(
                "comment_will_be_posted receiver %r killed the comment" % receiver.__name__)

    # Save the comment and signal that it was saved
    comment.save()
    signals.comment_was_posted.send(
        sender=comment.__class__,
        comment=comment,
        request=request
    )
    messages.success(request, 'Your comment was saved.')
    return redirect(next)
def post_comment ( request , next = None , using = None ) : data = request . POST . copy ( ) if request . user . is_authenticated : data [ "user" ] = request . user else : return CommentPostBadRequest ( "You must be logged in to comment" ) ctype = data . get ( "content_type" ) object_pk = data . get ( "object_pk" ) if ctype is None or object_pk is None : return CommentPostBadRequest ( "Missing content_type or object_pk field." ) try : model = models . get_model ( * ctype . split ( "." , 1 ) ) target = model . _default_manager . using ( using ) . get ( pk = object_pk ) except TypeError : return CommentPostBadRequest ( "Invalid content_type value: %r" % escape ( ctype ) ) except AttributeError : return CommentPostBadRequest ( "The given content-type %r does not resolve to a valid model." % escape ( ctype ) ) except ObjectDoesNotExist : return CommentPostBadRequest ( "No object matching content-type %r and object PK %r exists." % ( escape ( ctype ) , escape ( object_pk ) ) ) except ( ValueError , ValidationError ) as e : return CommentPostBadRequest ( "Attempting go get content-type %r and object PK %r exists raised %s" % ( escape ( ctype ) , escape ( object_pk ) , e . __class__ . __name__ ) ) form = comments . get_form ( ) ( target , data = data ) if form . security_errors ( ) : return CommentPostBadRequest ( "The comment form failed security verification: %s" % escape ( str ( form . security_errors ( ) ) ) ) if not next : next = data . get ( "next" ) if form . errors : template_list = [ "comments/%s/%s/form.html" % ( model . _meta . app_label , model . _meta . module_name ) , "comments/%s/form.html" % model . _meta . app_label , "comments/form.html" , ] return render_to_response ( template_list , { "comment" : form . data . get ( "comment" , "" ) , "form" : form , "next" : data . get ( "next" , next ) , } , RequestContext ( request , { } ) ) comment = form . get_comment_object ( ) comment . ip_address = request . META . get ( "REMOTE_ADDR" , None ) if request . user . is_authenticated : comment . user = request . user responses = signals . comment_will_be_posted . send ( sender = comment . __class__ , comment = comment , request = request ) for ( receiver , response ) in responses : if response == False : return CommentPostBadRequest ( "comment_will_be_posted receiver %r killed the comment" % receiver . __name__ ) comment . save ( ) signals . comment_was_posted . send ( sender = comment . __class__ , comment = comment , request = request ) messages . success ( request , 'Your comment was saved.' ) return redirect ( next )
Post a comment.

    HTTP POST is required.