You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

48 lines
1.5 KiB

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)