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.subscriptions import views as subscription
|
||||||
from mhackspace.base.feeds import LatestEntriesFeed
|
from mhackspace.base.feeds import LatestEntriesFeed
|
||||||
from mhackspace.blog.feeds import BlogFeed, BlogCategoryFeed
|
from mhackspace.blog.feeds import BlogFeed, BlogCategoryFeed
|
||||||
|
from mhackspace.blog.views import blog
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^$', TemplateView.as_view(template_name='pages/home.html'), name='home'),
|
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'^mailing-list/$', TemplateView.as_view(template_name='pages/mailing-list.html'), name='group'),
|
||||||
|
|
||||||
url(r'^contact/$', contact, name='contact'),
|
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/rss/$', BlogFeed()),
|
||||||
url(r'^blog/(?P<slug>[0-9A-Za-z_\-]+)/$', BlogCategoryFeed(), name='blog-item'),
|
url(r'^blog/(?P<slug>[0-9A-Za-z_\-]+)/$', blog, 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_\-]+)/$', blog, name='blog-category'),
|
||||||
url(r'^blog/category/(?P<category>[0-9A-Za-z_\-]+)/rss/$', BlogCategoryFeed(), name='blog-category_feed'),
|
url(r'^blog/category/(?P<category>[0-9A-Za-z_\-]+)/rss/$', BlogCategoryFeed(), name='blog-category-feed'),
|
||||||
|
|
||||||
|
|
||||||
# need to be logged in for these urls
|
# need to be logged in for these urls
|
||||||
|
|
|
@ -14,6 +14,9 @@ class Category(models.Model):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
def get_absolute_url(self):
|
||||||
|
return reverse('blog-category', kwargs={'category': self.slug})
|
||||||
|
|
||||||
class Post(models.Model):
|
class Post(models.Model):
|
||||||
title = models.CharField(max_length=100, unique=True)
|
title = models.CharField(max_length=100, unique=True)
|
||||||
slug = models.SlugField(max_length=100, unique=True)
|
slug = models.SlugField(max_length=100, unique=True)
|
||||||
|
|
|
@ -1,3 +1,31 @@
|
||||||
from django.shortcuts import render
|
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