diff --git a/flangr/posts/urls.py b/flangr/posts/urls.py index 6bd7575..604330b 100644 --- a/flangr/posts/urls.py +++ b/flangr/posts/urls.py @@ -4,5 +4,4 @@ from . import views urlpatterns = [ path("post/", views.PostDetailView.as_view()), - path("post//comments", views.AddCommentView.as_view()), ] diff --git a/flangr/posts/views.py b/flangr/posts/views.py index 5fa1d08..1f9c109 100644 --- a/flangr/posts/views.py +++ b/flangr/posts/views.py @@ -1,17 +1,29 @@ -from django.views.generic import DetailView +from django.views.generic import DetailView, CreateView +from django.views.generic.edit import ModelFormMixin from django.forms import modelform_factory +from django.http import HttpResponseRedirect # Create your views here. from .models import Post, Comment -class PostDetailView(DetailView): +class PostDetailView(DetailView, ModelFormMixin): model = Post + form_class = modelform_factory(Comment, fields=("comment",)) + success_url = "#" - def get_context_data(self, **kwargs): - context = { - "add_comment_form": modelform_factory(Comment, fields=("comment",)), - **kwargs, - } - return super().get_context_data(**context) + def form_valid(self, form): + comment = form.save(commit=False) + comment.post = self.object + comment.user = self.request.user + comment.save() + return HttpResponseRedirect(self.get_success_url()) + + def post(self, request, *args, **kwargs): + self.object = self.get_object() + form = self.form_class(request.POST) + if form.is_valid: + return self.form_valid(form) + else: + return self.form_invalid(form) diff --git a/flangr/templates/posts/post_detail.html b/flangr/templates/posts/post_detail.html index d44eb00..7e93e44 100644 --- a/flangr/templates/posts/post_detail.html +++ b/flangr/templates/posts/post_detail.html @@ -11,10 +11,9 @@
  • {{ comment.user }} - {{ comment.comment }}
  • {% endfor %} -
    + {% csrf_token %} - {{ add_comment_form }} + {{ form }}