Added Blog page and views
This commit is contained in:
parent
a5f0d97d54
commit
6c463d3b86
|
@ -14,6 +14,7 @@ from mhackspace.members.views import MemberListView
|
|||
from mhackspace.subscriptions import views as subscription
|
||||
from mhackspace.base.feeds import LatestEntriesFeed
|
||||
from mhackspace.blog.feeds import BlogFeed, BlogCategoryFeed
|
||||
from mhackspace.blog.views import blog
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^$', TemplateView.as_view(template_name='pages/home.html'), name='home'),
|
||||
|
@ -22,11 +23,11 @@ urlpatterns = [
|
|||
url(r'^mailing-list/$', TemplateView.as_view(template_name='pages/mailing-list.html'), name='group'),
|
||||
|
||||
url(r'^contact/$', contact, name='contact'),
|
||||
url(r'^blog/$', contact, name='contact'),
|
||||
url(r'^blog/$', blog, name='contact'),
|
||||
url(r'^blog/rss/$', BlogFeed()),
|
||||
url(r'^blog/(?P<slug>[0-9A-Za-z_\-]+)/$', BlogCategoryFeed(), name='blog-item'),
|
||||
url(r'^blog/category/(?P<slug>[0-9A-Za-z_\-]+)/$', BlogCategoryFeed(), name='blog-category'),
|
||||
url(r'^blog/category/(?P<category>[0-9A-Za-z_\-]+)/rss/$', BlogCategoryFeed(), name='blog-category_feed'),
|
||||
url(r'^blog/(?P<slug>[0-9A-Za-z_\-]+)/$', blog, name='blog-item'),
|
||||
url(r'^blog/category/(?P<category>[0-9A-Za-z_\-]+)/$', blog, name='blog-category'),
|
||||
url(r'^blog/category/(?P<category>[0-9A-Za-z_\-]+)/rss/$', BlogCategoryFeed(), name='blog-category-feed'),
|
||||
|
||||
|
||||
# need to be logged in for these urls
|
||||
|
|
|
@ -14,6 +14,9 @@ class Category(models.Model):
|
|||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('blog-category', kwargs={'category': self.slug})
|
||||
|
||||
class Post(models.Model):
|
||||
title = models.CharField(max_length=100, unique=True)
|
||||
slug = models.SlugField(max_length=100, unique=True)
|
||||
|
|
|
@ -1,3 +1,31 @@
|
|||
from django.shortcuts import render
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
from mhackspace.blog.models import Post, Category
|
||||
|
||||
# Create your views here.
|
||||
def blog(request, slug=None, category=None):
|
||||
categories = Category.objects.all()
|
||||
|
||||
try:
|
||||
if slug is not None:
|
||||
blog_posts = Post.objects.filter(slug=slug)
|
||||
elif category is not None:
|
||||
category = Category.objects.filter(slug=category)
|
||||
blog_posts = Post.objects.filter(categories=category)
|
||||
else:
|
||||
blog_posts = Post.objects.all()
|
||||
except Category.DoesNotExist:
|
||||
raise Http404("Category does not exist")
|
||||
except Post.DoesNotExist:
|
||||
raise Http404("Post does not exist")
|
||||
|
||||
paginator = Paginator(blog_posts, 5)
|
||||
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
posts = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
posts = paginator.page(1)
|
||||
except EmptyPage:
|
||||
posts = paginator.page(paginator.num_pages)
|
||||
|
||||
return render(request, 'blog/posts.html', {'posts': posts, 'categories': categories})
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Blog Posts{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="col-sm-8">
|
||||
{% for post in posts %}
|
||||
<a href="{{ post.get_absolute_url }}"><h1>{{ post.title }}</h1></a>
|
||||
<p>Published: {{ post.published_date }}</p>
|
||||
<p>{{ post.description }}</p>
|
||||
{% endfor %}
|
||||
|
||||
{% if posts.num_pages > 1 %}
|
||||
<div class="pagination">
|
||||
<span class="step-links">
|
||||
{% if contacts.has_previous %}
|
||||
<a href="?page={{ posts.previous_page_number }}">previous</a>
|
||||
{% endif %}
|
||||
|
||||
<span class="current">
|
||||
Page {{ posts.number }} of {{ posts.paginator.num_pages }}.
|
||||
</span>
|
||||
|
||||
{% if contacts.has_next %}
|
||||
<a href="?page={{ posts.next_page_number }}">next</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col-sm-3 offset-sm-1">
|
||||
<ul class="list-group">
|
||||
{% for category in categories %}
|
||||
<a href="{{ category.get_absolute_url }}" class="list-group-item list-group-item-action">{{ category.name }}</a>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock content %}
|
Loading…
Reference in New Issue