Как использовать форму django-comments с javascript?
У меня есть заметка, как система, см. Изображение здесь: http://www.uploadscreenshot.com/image/1091218/5818195 и при нажатии на заметку вы можете увидеть заголовок, сообщение и комментарии. Я отправляю их через JS-файл и устанавливаю их в виде. Мой вопрос сейчас, могу ли я сделать это с помощью формы django-comments? Если я просто вставлю в шаблон и внутри div, который отображается во всплывающем окне начальной загрузки с {% для примечания в примечаниях%}, он показывает все формы для каждого, не входящего в это окно (это понятно).
Как передать правильные значения в форму комментариев django?
Это функция js (просто соответствующая часть):
request.done(function(note) {
$('h3#view-note-title').text(note.title);
$('p#view-note-desc').text(note.message);
var html = '';
for(var i=0; i<note.comments.length; i++) {
var item = note.comments[i];
html += "<p id='comments' style='display: block; background: #a3d95d;margin-bottom: 3px;'>" + item.comment + "</p>";
html += "<p id='username' style='display: block;background: #edac65;margin-bottom: 3px;'>" + item.username + "</p>";
html += "<p id='date' style='display: block;background: #afe9eb;margin-bottom: 13px;'>"+ item.submit_date +"</p>";
}
$('div#comments').html(html);
});
и это релевантная часть views.py:
if request.method == "GET" and request.is_ajax:
note = get_object_or_404(Note, pk=request.GET['noteid'])
ctype = ContentType.objects.get_for_model(Note)
latest_comments = Comment.objects.filter(is_public=True, is_removed=False, content_type=ctype, object_pk=note.id).order_by('-submit_date')[:5]
response_data = {}
response_data['title'] = note.title
response_data['message'] = note.message
response_data['comments'] = [
{'username': c.user.username, 'comment': c.comment, 'submit_date': c.submit_date} for c in latest_comments]
return HttpResponse(json.dumps(response_data, cls=DjangoJSONEncoder), mimetype="application/json")
Я надеюсь, что я был достаточно ясен.
1 ответ
Решением было отправить CommentForm через представление.
Код: шаблон
<form id="form_comments" action="{% comment_form_target %}" method="post">
{% csrf_token %}
<table>
<tr>
<td colspan="2">
<div class="kopce"></div>
<input type="submit" name="submit" value="Post">
<input type="submit" name="preview" value="Preview">
</td>
</tr>
Вид:
from django.contrib.comments.forms import CommentForm
form = CommentForm(target_object = note)
response_data["form_html"] = form.as_p()
JS:
$('form#form_comments div.kopce').html(note.form_html);