Facebook
From ja, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 161
  1. from django.shortcuts import render, get_object_or_404
  2. from django.http import HttpResponseRedirect, Http404
  3. from django.urls import reverse
  4. from django.contrib.auth.decorators import login_required
  5. from .models import Post
  6. from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
  7. from django.views.generic import ListView
  8. from .forms import EmailPostForm, PostForm, EPostForm
  9. from django.core.mail import send_mail
  10.  
  11. # Create your views here.
  12. class PostListView(ListView):
  13.     queryset = Post.published.all()
  14.     context_object_name = 'posts'
  15.     paginate_by = 3
  16.     template_name = 'blog/post/list.html'
  17.  
  18. def post_list(request):
  19.     object_list = Post.published.all()
  20.     paginator = Paginator(object_list, 3) #Trzy posty na każdej stronie.
  21.     page = request.GET.get('page')        #Wskazuje nr bieżącej strony.
  22.     try:
  23.         posts = paginator.page(page)
  24.     except PageNotAnInteger:
  25.         #Jeżeli zmienna page nie jest liczbą całkowitą,
  26.         #wówczas pobierana jest pierwsza strona wyników.
  27.         posts = paginator.page(1)
  28.     except EmptyPage:
  29.         #Jeżeli zmienna page ma wartość większą niż numer ostatniej strony
  30.         #wyników, wtedy pobierana jest ostatnia strona wyników.
  31.         posts = paginator.page(paginator.num_pages)
  32.     return render(request,
  33.                   'blog/post/list.html',
  34.                   {'page' : page,
  35.                    'posts' : posts})
  36.                      
  37.  
  38. def post_detail(request, year, month, day, second, post):
  39.     post = get_object_or_404(Post, slug=post,
  40.                                    status='published',
  41.                                    publish__year=year,
  42.                                    publish__month=month,
  43.                                    publish__day=day,
  44.                                    publish__second=second)
  45.     return render(request,
  46.                   'blog/post/detail.html',
  47.                   {'post' : post})
  48.  
  49. @login_required
  50. def post_share(request, post_id):
  51.     #Pobranie posta na podstawie jego identyfikatora.
  52.     post = get_object_or_404(Post, id=post_id, status='published')
  53.     sent = False
  54.  
  55.     if request.method == 'POST':
  56.         #Formularz został wysłany.
  57.         form = EmailPostForm(request.POST)
  58.         if form.is_valid():
  59.             #Weryfikacja pól formularza zakończyła się powodzeniem...
  60.             cd = form.cleaned_data
  61.             #...więc można wysłać wiadomość.
  62.             post_url = request.build_absolute_uri(post.get_absolute_url())
  63.             subject ='{} ({}) zachęca do przeczytania "{}"'.format(cd['Podpis'], cd['Email'], post.title)
  64.             message = 'Przeczytaj post "{}" na stronie {}\n\n Komentarz dodany przez {} : {}'.format(post.title, post_url, cd['Podpis'], cd['Komentarz'])
  65.             send_mail(subject, message, '[email protected]', [cd['Odbiorca']])
  66.             sent = True
  67.     else:
  68.         form = EmailPostForm()
  69.     return render(request, 'blog/post/share.html', {'post' : post,
  70.                                                     'form' : form,
  71.                                                     'sent' : sent})    
  72. def post_suma(request):
  73.     object_list = Post.published.all()
  74.     all=0
  75.     ob = ''
  76.     for ob in object_list:
  77.         ob = ob.title
  78.         all += ob
  79.     return render(request, 'blog/suma.html', {'ob' : ob,
  80.                                               'all' : all})    
  81. @login_required
  82. def new_post(request):
  83.     """Dodaj nową kwotę."""
  84.     if request.method != 'POST':
  85.         form = PostForm(request.POST)
  86.     else:
  87.         form = PostForm(request.POST)
  88.         if form.is_valid():
  89.             new_post = form.save(commit=False)
  90.             new_post.author = request.user
  91.             new_post.save()
  92.             return HttpResponseRedirect(reverse('blog:post_list'))
  93.     return render(request, 'blog/post/new_post.html', {'form' : form})
  94.  
  95. @login_required
  96. def edit_post(request, post_id):
  97.     post = get_object_or_404(Post, id=post_id, status='published')
  98.    
  99.     if request.method != 'POST':
  100.         form = EPostForm(instance=post)
  101.     else:
  102.         form = EPostForm(instance=post, data=request.POST)
  103.         if form.is_valid():
  104.             #edit_post.author = request.user
  105.             form.save()
  106.             return HttpResponseRedirect(reverse('blog:post_list'))
  107.     return render(request, 'blog/post/edit_post.html', {'post':post,
  108.                                                         'form':form })