Created
November 13, 2018 18:25
-
-
Save jarekswierek/3f8c68c10bc5e14c7ffa05b324e2b291 to your computer and use it in GitHub Desktop.
blog fixes from jaro :P yolo!!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{% extends "blog/base.html" %} | |
{% block content %} | |
{{category.name}} | |
{% for post in posts %} | |
<article class="media content-section"> | |
<img class="rounded-circle article-img" src="{{ post.author.profile.image.url }}"> | |
<div class="media-body"> | |
<div class="article-metadata"> | |
<a class="mr-2" href="{% url 'user-posts' username=post.author.username %}">{{ post.author }}</a> | |
<small class="text-muted">{{ post.date_posted|date:"F d, Y" }}</small></br> | |
<small class="text-muted">Kategoria: {{ post.post_category }}</small> | |
</div> | |
<h2><a class="article-title" href="{% url 'post-detail' post.id %}">{{ post.title }}</a></h2> | |
<p class="article-content">{{ post.content }}</p> | |
</div> | |
</article> | |
{% endfor %} | |
{% endblock content %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{% extends "blog/base.html" %} | |
{% block content %} | |
{% for post in posts %} | |
<article class="media content-section"> | |
<img class="rounded-circle article-img" src="{{ post.author.profile.image.url }}" /> | |
<div class="media-body"> | |
<div class="article-metadata"> | |
<a class="mr-2" href="{% url 'user-posts' post.author.username %}">{{ post.author }}</a> | |
<small class="text-muted">{{ post.date_posted|date:"F d, Y" }}</small></br> | |
<small class="text-muted">Kategoria: <a class="mr-2" href="{% url 'category-detail' slug=post.post_category.slug %}">{{ post.post_category }}</a></small> | |
</div> | |
<h2><a class="article-title" href="{% url 'post-detail' post.id %}">{{ post.title }}</a></h2> | |
<p class="article-content">{{ post.content }}</p> | |
<a class="article-title" href="{% url 'post-detail' post.id %}">Komentarze: {{ post.comments.count }}</a> | |
</div> | |
</article> | |
{% endfor %} | |
{% if is_paginated %} | |
{% if page_obj.has_previous %} | |
<a class="btn btn-outline-info mb-4" href="?page=1">First</a> | |
<a class="btn btn-outline-info mb-4" href="?page={{ page_obj.previous_page_number }}">Previous</a> | |
{% endif %} | |
{% for num in page_obj.paginator.page_range %} | |
{% if page_obj.number == num %} | |
<a class="btn btn-info mb-4" href="?page={{ num }}">{{ num }}</a> | |
{% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %} | |
<a class="btn btn-outline-info mb-4" href="?page={{ num }}">{{ num }}</a> | |
{% endif %} | |
{% endfor %} | |
{% if page_obj.has_next %} | |
<a class="btn btn-outline-info mb-4" href="?page={{ page_obj.next_page_number }}">Next</a> | |
<a class="btn btn-outline-info mb-4" href="?page={{ page_obj.paginator.num_pages }}">Last</a> | |
{% endif %} | |
{% endif %} | |
{% endblock content %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.shortcuts import render, get_object_or_404, redirect | |
from django.contrib.auth.decorators import login_required | |
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin | |
from django.contrib.auth.models import User | |
from django.contrib import messages | |
from django.views.generic import ( | |
ListView, | |
DetailView, | |
CreateView, | |
UpdateView, | |
DeleteView | |
) | |
from .models import Post, Comment, Category | |
from .forms import CommentForm | |
# Create your views here. | |
def home(request): | |
context = { | |
'posts': Post.objects.all(), | |
} | |
return render(request, 'blog/home.html', context) | |
class PostListView(ListView): | |
model = Post | |
template_name = 'blog/home.html' # <app>/model>_<viewtype>.html | |
context_object_name = 'posts' | |
ordering = ['-date_posted'] | |
paginate_by = 3 | |
class UserPostListView(ListView): | |
model = Post | |
template_name = 'blog/user_posts.html' # <app>/<model>_<viewtype>.html | |
context_object_name = 'posts' | |
paginate_by = 3 | |
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') | |
class PostDetailView(DetailView): | |
model = Post | |
template_name = 'blog/post_detail.html' | |
class PostCreateView(LoginRequiredMixin, CreateView): | |
model = Post | |
fields = ['title', 'post_category', 'content'] | |
def form_valid(self, form): | |
form.instance.author = self.request.user | |
return super().form_valid(form) | |
template_name = 'blog/post_forms.html' | |
class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView): | |
model = Post | |
fields = ['title', 'post_category', 'content'] | |
def form_valid(self, form): | |
form.instance.author = self.request.user | |
return super().form_valid(form) | |
def test_func(self): | |
post = self.get_object() | |
if self.request.user == post.author: | |
return True | |
return False | |
template_name = 'blog/post_forms.html' | |
class PostDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView): | |
model = Post | |
success_url = '/' | |
def test_func(self): | |
post = self.get_object() | |
if self.request.user == post.author: | |
return True | |
return False | |
template_name = 'blog/post_confirm_delete.html' | |
class KategoriaCreateView(LoginRequiredMixin, CreateView): | |
model = Category | |
fields = ['name'] | |
def form_valid(self, form): | |
form.instance.author = self.request.user | |
return super().form_valid(form) | |
template_name = 'blog/AddCategory.html' | |
def CategoryDetail(request, slug): | |
template_name = 'blog/category_detail.html' # <app>/<model>_<viewtype>.html | |
category = get_object_or_404(Category, slug=slug) | |
post = Post.objects.filter(post_category=category) | |
context = { | |
'category': category, | |
'post': post, | |
} | |
return render(request, template_name, context) | |
@login_required | |
def AddComment(request, pk): | |
post = get_object_or_404(Post, pk=pk) | |
if request.method == "POST": | |
form = CommentForm(request.POST) | |
if form.is_valid(): | |
comment = form.save(commit=False) | |
comment.post = post | |
comment.author = request.user | |
comment.save() | |
messages.success(request, f'Dodałeś Komentarz!') | |
return redirect('post-detail', pk=post.pk) | |
else: | |
form = CommentForm() | |
return render(request, 'blog/Addcomment.html', {'form': form}) | |
def about(request): | |
return render(request, 'blog/about.html', {'title': 'About'}) |
Author
jarekswierek
commented
Nov 13, 2018
•
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment