class CommentForm(ModelForm):
class Meta:
model = Comment
fields = [
'content'
]
widgets = {'content': w.Textarea(attrs={
'cols': 80,
'row': 5,
'placeholder': 'Comment...',
})}
class Comment(CreateView):
form_class = CommentForm
def form_valid(self, form):
self.object = form.save(commit=False)
user = get_object_or_404(UserModel, id=self.request.user.id)
self.object.user = user
self.object.article = self.get(request=self)
self.object.save()
return HttpResponseRedirect(self.get_success_url())
<div class="well">
<form action="{% url "comment:comment_create" article.slug %}" method="post">
{% csrf_token %}
{{ form.as_p }}
<input id="comment" type="submit" class="btn btn-primary" value="Submit">
</form>
</div>
(function() {
$(document).ready(function() {
var csrfSafeMethod, csrftoken, getCookie, parentID, url;
getCookie = function(name) {
var cookie, cookieValue, cookies, i;
cookieValue = null;
if (document.cookie && document.cookie !== '') {
cookies = document.cookie.split(';');
i = 0;
while (i < cookies.length) {
cookie = jQuery.trim(cookies[i]);
if (cookie.substring(0, name.length + 1) === name + '=') {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
i++;
}
}
return cookieValue;
};
csrftoken = getCookie('csrftoken');
csrfSafeMethod = function(method) {
return /^(GET|HEAD|OPTIONS|TRACE)$/.test(method);
};
parentID = null;
url = window.location.pathname.replace(/\/\s*$/, '').split('/')[2];
$('a:contains(Reply)').click(function() {
return parentID = $(this).attr('data-parent');
});
return $('#comment').click(function() {
if ((parentID != null) && parentID > 0) {
console.log(parentID);
return $.ajax({
type: 'POST',
url: "/comment/" + url + "/comment_create/",
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
return xhr.setRequestHeader('X-CSRFToken', csrftoken);
}
},
dataType: 'html',
data: {
'parentID': parentID
},
});
}
});
});
}).call(this);
if self.request.is_ajax():
не реагируетself.request.POST["parentID"]
error - django.utils.datastructures.MultiValueDictKeyError: "'parentID'"
что бы этого не было, надо делать так self.request.POST.get("parentID")
но на выходе получается None потому, что в request.POST передаётся <QueryDict: {'csrfmiddlewaretoken': ['zkuIhR6yen3k38bGmFKrLfC7jTaACl0N'], 'content': ['']}>
но не попадает parentID . ЧЯДНТ? self.request.POST
нет ключа parentID.#comment
действие по умолчанию (тогда форма не будет обрабатываться, и запрос будет гарантированно отправлен с помощью AJAX), или добавить в форму скрытое поле, которое будет заполняться с помощью JavaScript или, если возможно, на сервере в шаблоне.