Advertisement
Guest User

views.py

a guest
Nov 11th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.72 KB | None | 0 0
  1. from django.shortcuts import render, get_object_or_404, redirect
  2. from django.views.generic import View
  3. from django.urls import reverse
  4. from django.contrib.auth.mixins import LoginRequiredMixin
  5. from django.core.paginator import Paginator
  6. from django.db.models import Q
  7.  
  8. from .models import *
  9. from .utils import ObjectDetailMixin, ObjectCreateMixin, ObjectDeleteMixin, ObjectUpdateMixin
  10. from .forms import TagForm, PostForm
  11. # Create your views here.
  12.  
  13. def posts_list(request):
  14.     search_query = request.GET.get('search', '')
  15.  
  16.     if search_query:
  17.         posts = Post.objects.filter(Q(title__icontains=search_query) | Q(body__icontains=search_query))
  18.     else:
  19.         posts = Post.objects.all()
  20.  
  21.     paginator = Paginator(posts, 10)
  22.  
  23.     page_number = request.GET.get('page', 1)
  24.     page = paginator.get_page(page_number)
  25.     is_paginated = page.has_other_pages()
  26.  
  27.     if page.has_previous():
  28.         prev_url = '?page={}'.format(page.previous_page_number())
  29.     else:
  30.         prev_url = ''
  31.  
  32.     if page.has_next():
  33.         next_url = '?page={}'.format(page.next_page_number())
  34.     else:
  35.         next_url = ''
  36.  
  37.     context = {
  38.         'page_object': page,
  39.         'is_paginated': is_paginated,
  40.         'next_url': next_url,
  41.         'prev_url': prev_url,
  42.     }
  43.  
  44.     return render(request, 'blog/index.html', context=context)
  45.  
  46.  
  47. class PostDetail(ObjectDetailMixin, View):
  48.     model = Post
  49.     template = 'blog/post_detail.html'
  50.  
  51.  
  52. class PostUpdate(LoginRequiredMixin, ObjectUpdateMixin, View):
  53.     model = Post
  54.     model_form = PostForm
  55.     template = 'blog/post_update_form.html'
  56.     raise_exception = True
  57.  
  58.  
  59. class PostCreate(LoginRequiredMixin, ObjectCreateMixin, View):
  60.     model_form = PostForm
  61.     template = 'blog/post_create_form.html'
  62.     raise_exception = True
  63.  
  64.  
  65. class PostDelete(LoginRequiredMixin, ObjectDeleteMixin, View):
  66.     model = Post
  67.     template = 'blog/post_delete_form.html'
  68.     redirect_url = 'posts_list_url'
  69.     raise_exception = True
  70.  
  71. def tags_list(request):
  72.     tags = Tag.objects.all()
  73.     return render(request, 'blog/tags_list.html', context={'tags':tags})
  74.  
  75.  
  76. class TagDetail(ObjectDetailMixin, View):
  77.     model = Tag
  78.     template = 'blog/tag_detail.html'
  79.  
  80.  
  81. class TagCreate(LoginRequiredMixin, ObjectCreateMixin, View):
  82.     model_form = TagForm
  83.     template = 'blog/tag_create.html'
  84.     raise_exception = True
  85.  
  86.  
  87. class TagUpdate(LoginRequiredMixin, ObjectUpdateMixin, View):
  88.     model = Tag
  89.     model_form = TagForm
  90.     template = 'blog/tag_update_form.html'
  91.     raise_exception = True
  92.  
  93.  
  94. class TagDelete(LoginRequiredMixin, ObjectDeleteMixin, View):
  95.     model = Tag
  96.     template = 'blog/tag_delete_form.html'
  97.     redirect_url = 'tags_list_url'
  98.     raise_exception = True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement