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 = [
|
urlpatterns = [
|
||||||
path("post/<int:pk>", views.PostDetailView.as_view()),
|
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.forms import modelform_factory
|
||||||
|
from django.http import HttpResponseRedirect
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
from .models import Post, Comment
|
from .models import Post, Comment
|
||||||
|
|
||||||
|
|
||||||
class PostDetailView(DetailView):
|
class PostDetailView(DetailView, ModelFormMixin):
|
||||||
model = Post
|
model = Post
|
||||||
|
form_class = modelform_factory(Comment, fields=("comment",))
|
||||||
|
success_url = "#"
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def form_valid(self, form):
|
||||||
context = {
|
comment = form.save(commit=False)
|
||||||
"add_comment_form": modelform_factory(Comment, fields=("comment",)),
|
comment.post = self.object
|
||||||
**kwargs,
|
comment.user = self.request.user
|
||||||
}
|
comment.save()
|
||||||
return super().get_context_data(**context)
|
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>
|
<li>{{ comment.user }} - {{ comment.comment }}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
<form action="{% url 'posts:add_comment' object.pk%}"
|
<form action="" method="post">
|
||||||
method="post">
|
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{{ add_comment_form }}
|
{{ form }}
|
||||||
<input type="submit", value="Post">
|
<input type="submit", value="Post">
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue