Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.shortcuts import render, get_object_or_404
- from django.http import HttpResponse
- from .models import Post
- from django.views.generic import (ListView,
- DetailView,
- CreateView,
- UpdateView,
- DeleteView)
- from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
- from django.contrib.auth.models import User
- # # Create your views here.
- # function-based views
- # def home(request):
- # # return HttpResponse("<h1>hullo :)</h1>")
- # ontext = {
- # # "posts": DUMMY_CONTENT
- # "posts": Post.objects.all()
- # }
- # return render(request, "blog/home.html", context=ontext)
- # class-based views
- class PostListView(ListView):
- model = Post
- template_name = 'blog/home.html' # <app>/<model>_<viewtype>.html
- # by default ListView will want to loop over a variable called `object_list`, but we called it `posts`
- # in the dictionary above
- context_object_name = 'posts'
- ordering = ['date_posted'] # oldest to newst
- # ordering = ['-date_posted'] # newest to oldest
- class PostDetailView(DetailView):
- model = Post
- class PostCreateView(LoginRequiredMixin, CreateView):
- model = Post
- fields = ['title', 'content']
- def form_valid(self, form):
- '''
- Assign the currently logged-in user as the author of this post
- '''
- form.instance.author = self.request.user
- return super().form_valid(form)
- class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
- model = Post
- fields = ['title', 'content']
- def form_valid(self, form):
- '''
- Assign the currently logged-in user as the author of this post
- '''
- form.instance.author = self.request.user
- return super().form_valid(form)
- def test_func(self):
- '''
- Check that the currently logged-in user is the author of the post attempting to be updated
- '''
- post = self.get_object()
- return self.request.user == post.author
- class PostDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
- model = Post
- success_url = '/'
- def test_func(self):
- '''
- Check that the currently logged-in user is the author of the post attempting to be updated
- '''
- post = self.get_object()
- return self.request.user == post.author
- class UserPostListView(ListView):
- model = Post
- template_name = 'blog/user_posts.html' # <app>/<model>_<viewtype>.html
- # by default ListView will want to loop over a variable called `object_list`, but we called it `posts`
- # in the dictionary above
- context_object_name = 'posts'
- ordering = ['date_posted'] # oldest to newst
- # ordering = ['-date_posted'] # newest to oldest
- def get_queryset(self):
- user = get_object_or_404(User, username=self.kwargs.get('username'))
- return Post.objects.filter(author=user).order_by('-date_posted')
- def about(request):
- # return HttpResponse()
- return render(request, "blog/about.html", context={'title': 'A nice little title for the about page'})
- from django.shortcuts import render
- # Create your views here.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement