Allow commenting on posts
This commit is contained in:
parent
f267d9d2e7
commit
3db4514f6d
3 changed files with 22 additions and 12 deletions
|
|
@ -4,5 +4,4 @@ from . import views
|
|||
|
||||
urlpatterns = [
|
||||
path("post/<int:pk>", views.PostDetailView.as_view()),
|
||||
path("post/<int:pk>/comments", views.AddCommentView.as_view()),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -11,10 +11,9 @@
|
|||
<li>{{ comment.user }} - {{ comment.comment }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<form action="{% url 'posts:add_comment' object.pk%}"
|
||||
method="post">
|
||||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
{{ add_comment_form }}
|
||||
{{ form }}
|
||||
<input type="submit", value="Post">
|
||||
</form>
|
||||
</body>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue