提问人:Elyas Shavikloo 提问时间:11/6/2023 更新时间:11/6/2023 访问量:51
Django 中的 AJAX 注释
ajax comment in django
问:
我正在尝试在我的 Django 应用程序中对帖子发表评论。我有一个评论的工作表单,但是当我提交表单时,我收到一条错误消息。
错误消息为:
{“response”: “禁止访问”} 我已经检查了我的代码,我确定表单是有效的,并且请求被发送到正确的 URL。我还检查了尝试创建评论的用户的权限,他们已登录并具有适当的权限。
我不确定是什么原因导致了错误。谁能帮我?
法典:
class CommentForm(forms.ModelForm):
author = forms.CharField(required=True, error_messages={'required': 'لطفاً نام خود را وارد کنید.'})
body = forms.CharField(required=True, error_messages={'required': 'لطفاً نظر خود را وارد کنید.'})
class Meta:
model = Comment
fields = ('author', 'body', 'post')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.cleaned_data = {}
def clean_author(self):
author = self.cleaned_data.get('author', 'نام کاربری ناشناس')
return author
def clean_body(self):
body = self.cleaned_data.get('body')
return body
function comment(slug, id) {
var comment = document.getElementById("comment").value;
$.post(`/posts/post/${slug}/comment/create/${id}`, {
comment: comment
}).then(response => {
if (response['response'] === 'created') {
var count = document.getElementById("count");
count.innerText = Number(count.innerText) + 1;
document.getElementById("comment").value = "";
} else {
var errors = response['errors'];
for (var key in errors) {
var error = errors[key];
document.getElementById("comment").classList.add("is-invalid");
document.getElementById("comment").setAttribute("aria-invalid", "true");
document.getElementById("comment").setCustomValidity(error);
}
}
});
}
环境:
Django 4.2.6 蟒蛇 3.11 重现步骤:
转到帖子页面。 点击“发表评论”按钮。 在注释字段中输入注释。 点击“提交”按钮。 预期行为:
评论应创建并显示在帖子页面上。
实际行为:
显示错误消息 “{”response“: ”forbidden“}”。
附加信息:
我已经检查了尝试创建评论的用户的权限,他们已登录并具有适当的权限。 我还检查了表格和请求,它们似乎是有效的。your text
我不确定是什么原因导致了错误。谁能帮我?
我正在尝试在我的 Django 应用程序中对帖子发表评论。我有一个评论的工作表单,但是当我提交表单时,我收到一条错误消息。
答:
0赞
Mohamed ElKalioby
11/6/2023
#1
您在帖子中缺少 csrfmiddlewaretoken
$.post(`/posts/post/${slug}/comment/create/${id}`, {
comment: comment, csrfmiddlewaretoken: "{{csrf_token}}"
}).then(response => {
})
评论
0赞
Elyas Shavikloo
11/6/2023
我更改了该代码,但没有成功
0赞
Mohamed ElKalioby
11/6/2023
请在问题中分享您的观点
评论
csrftoken
。请分享,也许这样我们就可以很容易地复制它。models.py
views.py
urls.py