Django - Добавление комментариев к сообщению без перенаправления
Благословения,
Когда я пытаюсь добавить комментарий к сообщению, он перенаправляет меня на соответствующую HTML-страницу, которая, в свою очередь, позволяет мне комментировать.
Что я пытаюсь достичь здесь, это возможность комментировать на странице сообщения без необходимости перенаправления...
views.py
# Post page
class MovieDetail(DetailView):
model = Movie
def render_to_response(self, *args, **kwargs):
self.object.refresh_from_db()
self.object.views_count += 1
self.object.save()
return super().render_to_response(*args, **kwargs)
def get_context_data(self, **kwargs):
context = super(MovieDetail, self).get_context_data(**kwargs)
context['links'] = MovieLink.objects.filter(movie=self.get_object())
context['related_movies'] = Movie.objects.filter(category=self.get_object().category)
return context
@login_required(login_url='/accounts/login/')
def comment_create(request, slug):
movie = Movie.objects.get(slug=slug)
if request.method == 'POST':
form = forms.CommentForm(request.POST, request.FILES)
if form.is_valid:
comment = form.save(commit=False)
comment.post = movie
comment.author = request.user
form.save()
return redirect('movies:movie_detail', slug=slug)
else:
form = forms.CommentForm()
return render(request, 'movie/add_comment.html', {'form': form})
forms.py
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('name', 'body')
models.py
class Comment(models.Model):
post = models.ForeignKey(Movie, on_delete=models.CASCADE, related_name='comments')
name = models.ForeignKey(User, default=None, on_delete=models.CASCADE)
body = models.TextField()
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['created_on']
def __str__(self):
return 'Comment {} by {}'.format(self.body, self.name)
movie_detail.html
<div id="respond">
{% if not movie.comments.all %}
<p style="color: white">No Comments Added yet...</p>
{% else %}
{% for comment in movie.comments.all %}
<section class="reply" style="padding: 10px; color: white;">
<h3><strong>{{ comment.name }}</strong></h3>
<p>{{ comment.body | linebreaks }}</p>
<p><small>{{ comment.created_on }}</small></p>
</section>
{% endfor %}
{% endif %}
<br>
<hr>
<form method="post" style="margin-top: 1.3em;">
{{ form.as_p }}
{% csrf_token %}
<textarea name="comment" id="comment" rows="10" tabindex="4" required="required"></textarea>
<a href="{% url 'movies:add_comment' movie.slug %}" class="myButton">Submit</a>
Буду очень признателен за помощь! :)
Это происходит потому, что вы создали еще одно представление для комментария. Вы должны использовать только одно представление как для запроса get (детали фильма), так и для запроса post (для создания комментария). Если вы не знаете, как это сделать, вот ссылка: https://dontrepeatyourself.org/post/django-blog-tutorial-part-4-posts-and-comments/