Javascript view videos.views.add_comment_post没有';t返回HttpResponse对象。使用Django中的第二个对象
我试图建立一个博客,这个博客由帖子组成,这些帖子有评论,当我在第一篇帖子中添加评论时,它成功地添加了评论,但当我尝试添加评论时,第二或第三个错误就会出现 ValueError:view videos.views.add_comment_post未返回HttpResponse对象。相反,它没有返回任何结果。 我尝试将注释表单添加到模板中,但没有任何小部件Javascript view videos.views.add_comment_post没有';t返回HttpResponse对象。使用Django中的第二个对象,javascript,django,django-models,django-views,django-templates,Javascript,Django,Django Models,Django Views,Django Templates,我试图建立一个博客,这个博客由帖子组成,这些帖子有评论,当我在第一篇帖子中添加评论时,它成功地添加了评论,但当我尝试添加评论时,第二或第三个错误就会出现 ValueError:view videos.views.add_comment_post未返回HttpResponse对象。相反,它没有返回任何结果。 我尝试将注释表单添加到模板中,但没有任何小部件commentForm=PostCommentForm()添加到模板{commentForm},我填充了它,这个问题仍然存在 我的后模特 clas
commentForm=PostCommentForm()
添加到模板{commentForm}
,我填充了它,这个问题仍然存在
我的后模特
class Post(models.Model):
author = models.ForeignKey(Account, on_delete=models.CASCADE)
article = models.TextField(null=True, blank=True)
photo_article = models.ImageField(max_length=255, upload_to=get_poster_filepath)
created_date = models.DateTimeField(auto_now_add=True)
class PostCommentIDF(MPTTModel):
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
author = models.ForeignKey(Account, on_delete=models.CASCADE)
content = models.TextField()
publish = models.DateTimeField(auto_now_add=True)
status = models.BooleanField(default=True)
我的“创建评论”视图
@login_required
def add_comment_post(request):
if not request.user.is_active:
return render(request, 'personal/violated.html')
if request.method == 'POST':
if request.POST.get('action') == 'delete':
id = request.POST.get('nodeid')
c = PostCommentIDF.objects.get(id=id)
c.delete()
return JsonResponse({'remove': id})
else:
comment_form = PostCommentForm(request.POST)
if comment_form.is_valid():
user_comment = comment_form.save(commit=False)
user_comment.author = request.user
user_comment.save()
result = comment_form.cleaned_data.get('content')
user = request.user.username
return JsonResponse({'result': result, 'user': user})
我的意见表
class PostCommentForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
class Meta:
model = PostCommentIDF
fields = {'post', 'content'}
widgets = {
'content': forms.Textarea(attrs={'class': ' form-control', 'rows': '1', 'placeholder': 'Comment', 'required': 'True', })
}
def save(self, *args, **kwargs):
PostCommentIDF.objects.rebuild()
return super(PostCommentForm, self).save(*args, **kwargs)
我的主页模板
{% for video in video %}
....
<form id="Postcommentform" class="Postcommentform" method="post" style="width: 100%;">
{% load mptt_tags %}
{% csrf_token %}
<
select class="d-none" name="video" id="id_video">
<option value="{{ video.id }}" selected="{{ video.id }}"></option></select>
<div class="d-flex">
<label class="small font-weight-bold">{{ comments.parent.label }}</label>
{{ comments.parent }}
{{comments.content}}
<button value="Postcommentform" id="Postnewcomment" type="submit" style="color: white; border-radius: 0;" class="d-flex justify-content-end btn btn-primary">Post</button>
</div>
</form>
....
{% endfor %}
{%用于视频中的视频%}
....
{%load mptt_标记%}
{%csrf_令牌%}
<
选择class=“d-none”name=“video”id=“id\u video”>
{{comments.parent.label}
{{comments.parent}}
{{comments.content}
邮递
....
{%endfor%}
我的用于添加帖子的ajax
myCommentForm = document.getElementById("Postcommentform")
$(document).on('click', '#Postnewcomment, #Postnewcommentinner', function (e) {
e.preventDefault();
var button = $(this).attr("value");
var placement = "Postcommentform"
if (button == "Postnewcommentform") {
var placement = "becomm"
}
$.ajax({
type: 'POST',
url: '{% url "video:addcomment_post" %}',
data: $("#" + button).serialize(),
cache: false,
success: function (json) {
console.log(json);
$('<div id="" class="my-2 p-2" style="border: 1px solid grey"> \
<div class="d-flex bd-highlight mb-3">\
<div class="p-2 bd-highlight">' + json['user'] + '</div> <div class="ml-auto p-2 bd-highlight">Posted: Just now!</div> \
</div>\
<div>' + json['result'] + '</div> \
<br>\
</div>').insertAfter('becomm' + placement);
document.getElementById("Postcommentform").reset();
},
error: function (xhr, errmsg, err) {
}
});
})
myCommentForm=document.getElementById(“Postcommentform”)
$(文档).on('click','postnocommont,#postnocommontinner',函数(e){
e、 预防默认值();
var按钮=$(this.attr(“值”);
var placement=“Postcommentform”
如果(按钮==“Postnewcommentform”){
var placement=“becomm”
}
$.ajax({
键入:“POST”,
url:“{%url”视频:addcomment_post“%}”,
数据:$(“#”+按钮)。序列化(),
cache:false,
成功:函数(json){
log(json);
$(' \
\
'+json['user']+'发布:刚刚\
\
'+json['result']+'\
\
)。插入后面('becomm'+位置);
document.getElementById(“Postcommentform”).reset();
},
错误:函数(xhr、errmsg、err){
}
});
})
显示添加\评论\发布视图的完整代码您好,我更新了我的问题如果表单无效,您尚未返回任何响应。事实上,即使只是404或403,您也应该返回GET请求的响应。我如何才能让表单不出现问题,因为我可以在第一篇文章中添加注释,但我不能在第二篇或第三篇文章中只在该视图的末尾添加注释return JsonResponse({'result':“No action taked”})
这将解决帖子中提到的问题。。