我对此比较陌生,但我正在处理事情。我希望对事情的运作方式有充分的了解。
话虽如此,我一直试图让Django用ajax钩子发表评论。
我以为我接近完成了这个,但到目前为止还没有。我能够编写一个可以保存已发布评论的视图,然后将我重定向到我的主页面。我希望能够使用ajax,以便评论将以facebook风格发布。
def add_comment(request, pk):
if request.method == 'POST' and request.is_ajax():
comment_form = CommentForm(request.POST)
if comment_form.is_valid():
comment = comment_form.save(commit=True)
comment.save()
json = simplejson.dumps(comment, ensure_ascii=False)
return HttpResponse(json, mimetype='application/json')
return render_to_response(simplejson.dumps('{{ post.id }}', {'comment': comment,}), context_instance=RequestContext(request), mimetype='application/json')
这个观点现在非常粗糙。我没有对json的任何调用,但是,阅读这可能是要走的路。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script></javascript>
<script type="text/javascript">
$(document).click(function()
{
$('#comment_form').submit(function()
{
var dataString = $('#comment_form').serialize();
$.ajax({
type: 'POST',
url: '{{ post.id }}',
data: dataString,
success: function(data){
$('{{ post.id }}').html(data);
},
});
return false;
});
});
</script>
<form action="" method="POST" id="comment_form">{% csrf_token %}
<div id="cform">
Name: {{ form.author }}
<p>{{ form.body|linebreaks }}</p>
</div>
<div id="submit"><input type="submit" value="Submit"></div>
</form>
答案 0 :(得分:0)
感谢您的回复,下次我肯定会留下更详细的帖子。我的问题出在jquery脚本中。我试图将dataString作为表单数据传递给视图,当它是一个DOM对象而不是实际的表单数据时。这是最终的工作脚本。
$(document).ready(function() {
$('#comment_form').submit(function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: '{% url art.views.post %}',
data: $('#comment_form').serialize(),
dataType: 'json',
success: function() {
location.reload();
$('#comment_form').get(0).reset();
},
});
return false;
});
});