Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- models.py
- POST_CHOICES = (
- ('p', 'post'),
- ('v', 'video'),
- ('i', 'image'),
- ('q', 'quote'),
- )
- class Post(models.Model):
- created_at = models.DateTimeField(auto_now_add=True)
- modified_at = models.DateTimeField(auto_now=True, db_index=True)
- title = models.CharField(max_length=255)
- slug = models.SlugField()
- post_type = models.CharField(max_length=1, choices=POST_CHOICES, default='p')
- body = HTMLField() # models.TextField(blank=True, help_text="The body of the Post / Quote")
- embed_code = models.TextField(blank=True, help_text="The embed code for video")
- image_url = models.URLField(blank=True, help_text="Image src")
- author = models.CharField(blank=True, max_length=255, help_text="Author name")
- def get_absolute_url(self):
- return reverse('post', kwargs={"slug": self.slug})
- def __unicode__(self):
- return unicode(self.title)
- -- views.py
- from django.http import HttpResponseRedirect
- from django.views.generic import DetailView
- from blog.forms import CommentForm
- class PostDetailView(DetailView):
- methods = ['get', 'post']
- def get(self, request, *args, **kwargs):
- self.object = self.get_object()
- form = CommentForm(object=self.object)
- context = self.get_context_data(object=self.object, form=form)
- return self.render_to_response(context)
- def post(self, request, *args, **kwargs):
- self.object = self.get_object()
- form = CommentForm(object=self.object, data=request.POST)
- if form.is_valid():
- form.save()
- return HttpResponseRedirect(self.object.get_absolute_url())
- context = self.get_context_data(object=self.object, form=form)
- return self.render_to_response(context)
- -- urls.py
- from django.conf.urls import patterns, include, url
- from django.views.generic import ListView, DetailView
- from blog.models import Post
- from blog.views import PostDetailView
- urlpatterns = patterns('',
- url(r'^$', ListView.as_view(
- queryset=Post.objects.all(),
- context_object_name="posts_list"),
- name="home"
- ),
- url(r'^post/(?P<slug>[a-zA-Z0-9-]+)/$', PostDetailView.as_view(
- queryset=Post.objects.all(),
- context_object_name="post"),
- name="post"
- ),
- )
- -- post_list.html
- {% extends "base.html" %}
- {% block content %}
- {% for post in posts_list %}
- <h2><a href="{% url post slug=post.slug %}">{{ post.title }}</a></h2>
- {% if post.post_type == 'p' %}
- {{ post.body|safe|truncatewords:20 }}
- {% endif %}
- {% if post.post_type == 'v' %}
- {{ post.embed_code|safe }}
- {% endif %}
- {% if post.post_type == 'i' %}
- <p><img src="{{ post.image_url }}" /><p>
- {% endif %}
- {% if post.post_type == 'q' %}
- <blockquote>{{ post.body|safe|truncatewords:20 }}</blockquote>
- <p>{{ post.author }}</p>
- {% endif %}
- <p>
- {{ post.created_at }} |
- {% with total=post.comment_set.all|length %}
- {{ total }} comment{{ total|pluralize }}
- {% endwith %}
- </p>
- {% endfor %}
- {% endblock %}
Advertisement
Add Comment
Please, Sign In to add comment