Я кодирую новостной сайт. Теперь я детализирую с помощью функции поста комментария. И отвечаю на вопрос:
Reverse for 'update_comment' with arguments '('',)' not found. 1 pattern(s) tried: ['comment\\/(?P<news_pk>[0-9]+)$']
Я пробовал много раз и раз, но все еще не могу решить это, и я не могу найти что-то не так с моим кодом. И мне действительно нужна ваша помощь.
Функция поста комментария находится в news_detail.html. В моем проекте есть два важных приложения новости и операция комментарий модели под операция
Вот мой root urls.py :
path('news', include(('news.urls', 'news'), namespace="news")),
path('', include(('operation.urls', 'operation'), namespace="operation")),
Вот news / urls.py
path('-<int:news_pk>', newsDetailView, name="news_detail")
Вот операция / urls.py:
path('comment/<int:news_pk>', views.update_comment, name="update_comment"),
Вот news / view.py
def newsDetailView(request, news_pk):
news = News.objects.get(id=news_pk)
title = news.title
author = news.author_name
add_time = news.add_time
content = news.content
category = news.category
tags = news.tag.annotate(news_count=Count('news'))
all_comments = NewsComments.objects.filter(news=news)
return render(request, "news_detail.html", {
'title': title,
'author': author,
'add_time': add_time,
'content': content,
'tags': tags,
'category': category,
'all_comments': all_comments,
})
Вот операция / views.py
def update_comment(request, news_pk):
news = News.objects.get(id=news_pk)
comment_form = CommentForm(request.POST or None)
if request.method == 'POST' and comment_form.is_valid():
if not request.user.is_authenticated:
return render(request, 'login.html', {})
comments = comment_form.cleaned_data.get("comment")
news_comment = NewsComments(user=request.user, comments=comments, news=news)
news_comment.save()
return render(request, "news_detail.html", {
'news_comment': news_comment,
'news':news
})
А вот и news_detail.html:
{% if user.is_authenticated %}
<form method="POST" action="{% url 'operation:update_comment' news.pk %}">{% csrf_token %}
<textarea id="js-pl-textarea" name="comment"></textarea>
<input type="submit" id="js-pl-submit" value="发表评论"></input></form>