from django.contrib import messages from django.shortcuts import render, get_object_or_404, redirect from django.views.generic import ListView, DetailView from django.views.generic.edit import FormView, CreateView from news.forms import CommentForm from news.models import * class NewsList(ListView): model = News template_name = 'news/list.jinja' queryset = News.objects.filter(is_public=True) def get_queryset(self): tag = self.request.GET.get('tag', None) retval = self.queryset if tag: retval = self.queryset.filter(tags_list__slug__iexact=tag) return retval def get_context_data(self, **kwargs): retval = super(NewsList, self).get_context_data() tag = self.request.GET.get('tag', None) if tag: try: retval['tag'] = NewsTag.objects.get(slug=tag) except: pass return retval def news_detail(request, slug): object = get_object_or_404(News, slug__iexact=slug) form = CommentForm(request.POST or None) if form.is_valid(): comment = form.save(commit=False) comment.news = object comment.save() messages.success(request, 'Ваш комментарий успешно опубликован!') return redirect(object.get_absolute_url()+'#comment{}'.format(comment.pk)) c = dict( object=object, form=form ) return render(request, 'news/detail.jinja', c)