В настоящее время я пытаюсь реализовать функцию «Добавить комментарии» для моего сайта через ajax. Но я всегда получаю 500 Internal Server Error
, когда я отправляю комментарии. Я проверил консоль Chrome и обнаружил, что там написано "TypeError at /articles/test_1 get() got an unexpected keyword argument 'id'"
(здесь test_1
- фрагмент статьи). Я запутался в этой ошибке. Может ли кто-нибудь помочь мне с этим?
Мой models.py :
class Article_comments(models.Model):
post = models.ForeignKey(Article, on_delete=models.CASCADE)
nicknames = models.ForeignKey(UserProfile, on_delete=models.CASCADE, related_name='UserProfile_nickname')
comment = models.TextField(max_length=3000)
timestamp = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name = 'Article comments'
verbose_name_plural = verbose_name
ordering = ['-timestamp']
def __str__(self):
return '{}-{}'.format(self.post.article_ti, str(self.nicknames.nickname), self.nicknames.avatar, self.nicknames.qq, self.nicknames.motto, self.nicknames.create_time, self.nicknames.user_url)
My views.py
def article_details(request, slug):
article_detail = get_object_or_404(Article, slug=slug)
comments = Article_comments.objects.filter(post=article_detail).order_by('-timestamp')
paginator_comment = Paginator(comments, per_page=5)
page_var = 'page'
page = request.GET.get(page_var, 1)
try:
sets = paginator_comment.page(page)
except PageNotAnInteger:
sets = paginator_comment.page(1)
except EmptyPage:
sets = paginator_comment.page(paginator_comment.num_pages)
# Here is the ajax code:
if request.method == 'POST':
if request.is_ajax():
user = request.user
usr_nc = UserProfile.objects.filter(usr=user)
cmt_user = usr_nc
cmt_art_id = request.POST.get('article_id')
cmt_body = request.POST.get('body')
article = request.POST.get(id=cmt_art_id)
slug = slug
comments = Article_comments.objects.create(nicknames=cmt_user, comment=cmt_body, post=article)
comments.save()
return JsonResponse({'msg': 'Comments successfully submitted!'})
article_detail.view_sum()
return render(request, 'article_detail.html', {'article_detail':article_detail, 'comments':comments, 'sets':sets, 'page_var':page_var})
My app / urls.py :
path('articles/<str:slug>', article_details, name='article_url')
Код ajax моего шаблона:
$('#Add_reply').on('click', function (e) {
e.preventDefault();
var coms=$('#main_comments_area').val()
if (coms == 0){
alert('Please enter your comments!')
return;
}
var art_id=$('#main_comments_area').data('article_id');
var usr_name=$('#main_comments_area').data('cmt_usr');
var csrf=$('#main_comments_area').data('csrf');
var urlslg=$('#main_comments_area').data('slug');
$.ajax({
type:'POST',
url:urlslg,
data:{
user:usr_name,
cmt_art_id:art_id,
cmt_body:coms,
csrfmiddlewaretoken:csrf
},
beforSend:function () {
alert("Sending ...")
},
success:function () {
alert('Success!')
},
error:function (data) {
alert('Error:'+data.msg)
}
})
})