Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.30 KB | None | 0 0
  1. from django.shortcuts import render, get_object_or_404
  2. from django.http import HttpResponse
  3. from .models import Post
  4. from django.views.generic import (ListView,
  5.                                   DetailView,
  6.                                   CreateView,
  7.                                   UpdateView,
  8.                                   DeleteView)
  9. from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
  10. from django.contrib.auth.models import User
  11.  
  12.  
  13. # # Create your views here.
  14.  
  15. # function-based views
  16.  
  17. # def home(request):
  18. #     # return HttpResponse("<h1>hullo :)</h1>")
  19. #     ontext = {
  20. #         # "posts": DUMMY_CONTENT
  21. #         "posts": Post.objects.all()
  22. #     }
  23. #     return render(request, "blog/home.html", context=ontext)
  24.  
  25. # class-based views
  26.  
  27. class PostListView(ListView):
  28.     model = Post
  29.     template_name = 'blog/home.html'  # <app>/<model>_<viewtype>.html
  30.     # by default ListView will want to loop over a variable called `object_list`, but we called it `posts`
  31.     # in the dictionary above
  32.     context_object_name = 'posts'
  33.     ordering = ['date_posted']  # oldest to newst
  34.     # ordering = ['-date_posted'] # newest to oldest
  35.  
  36.  
  37. class PostDetailView(DetailView):
  38.     model = Post
  39.  
  40.  
  41. class PostCreateView(LoginRequiredMixin, CreateView):
  42.     model = Post
  43.     fields = ['title', 'content']
  44.  
  45.     def form_valid(self, form):
  46.         '''
  47.        Assign the currently logged-in user as the author of this post
  48.        '''
  49.         form.instance.author = self.request.user
  50.         return super().form_valid(form)
  51.  
  52.  
  53.  
  54. class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
  55.     model = Post
  56.     fields = ['title', 'content']
  57.  
  58.     def form_valid(self, form):
  59.         '''
  60.        Assign the currently logged-in user as the author of this post
  61.        '''
  62.         form.instance.author = self.request.user
  63.         return super().form_valid(form)
  64.  
  65.     def test_func(self):
  66.         '''
  67.        Check that the currently logged-in user is the author of the post attempting to be updated
  68.        '''
  69.         post = self.get_object()
  70.         return self.request.user == post.author
  71.  
  72.  
  73. class PostDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
  74.     model = Post
  75.     success_url = '/'
  76.  
  77.     def test_func(self):
  78.         '''
  79.        Check that the currently logged-in user is the author of the post attempting to be updated
  80.        '''
  81.         post = self.get_object()
  82.         return self.request.user == post.author
  83.  
  84.  
  85. class UserPostListView(ListView):
  86.     model = Post
  87.     template_name = 'blog/user_posts.html'  # <app>/<model>_<viewtype>.html
  88.     # by default ListView will want to loop over a variable called `object_list`, but we called it `posts`
  89.     # in the dictionary above
  90.     context_object_name = 'posts'
  91.     ordering = ['date_posted']  # oldest to newst
  92.  
  93.     # ordering = ['-date_posted'] # newest to oldest
  94.  
  95.     def get_queryset(self):
  96.         user = get_object_or_404(User, username=self.kwargs.get('username'))
  97.         return Post.objects.filter(author=user).order_by('-date_posted')
  98.  
  99.  
  100. def about(request):
  101.     # return HttpResponse()
  102.     return render(request, "blog/about.html", context={'title': 'A nice little title for the about page'})
  103.  
  104.  
  105. from django.shortcuts import render
  106.  
  107. # Create your views here.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement