Guest User

Untitled

a guest
May 9th, 2013
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.17 KB | None | 0 0
  1. -- models.py
  2.  
  3. POST_CHOICES = (
  4.     ('p', 'post'),
  5.     ('v', 'video'),
  6.     ('i', 'image'),
  7.     ('q', 'quote'),
  8. )
  9.  
  10.  
  11. class Post(models.Model):
  12.     created_at = models.DateTimeField(auto_now_add=True)
  13.     modified_at = models.DateTimeField(auto_now=True, db_index=True)
  14.     title = models.CharField(max_length=255)
  15.     slug = models.SlugField()
  16.  
  17.     post_type = models.CharField(max_length=1, choices=POST_CHOICES, default='p')
  18.  
  19.     body = HTMLField() # models.TextField(blank=True, help_text="The body of the Post / Quote")
  20.     embed_code = models.TextField(blank=True, help_text="The embed code for video")
  21.     image_url = models.URLField(blank=True, help_text="Image src")
  22.     author = models.CharField(blank=True, max_length=255, help_text="Author name")
  23.  
  24.     def get_absolute_url(self):
  25.         return reverse('post', kwargs={"slug": self.slug})
  26.  
  27.     def __unicode__(self):
  28.         return unicode(self.title)
  29.  
  30.  
  31. -- views.py
  32.  
  33. from django.http import HttpResponseRedirect
  34. from django.views.generic import DetailView
  35. from blog.forms import CommentForm
  36.  
  37.  
  38. class PostDetailView(DetailView):
  39.     methods = ['get', 'post']
  40.  
  41.     def get(self, request, *args, **kwargs):
  42.         self.object = self.get_object()
  43.         form = CommentForm(object=self.object)
  44.         context = self.get_context_data(object=self.object, form=form)
  45.         return self.render_to_response(context)
  46.  
  47.     def post(self, request, *args, **kwargs):
  48.         self.object = self.get_object()
  49.         form = CommentForm(object=self.object, data=request.POST)
  50.  
  51.         if form.is_valid():
  52.             form.save()
  53.             return HttpResponseRedirect(self.object.get_absolute_url())
  54.  
  55.         context = self.get_context_data(object=self.object, form=form)
  56.         return self.render_to_response(context)
  57.  
  58. -- urls.py
  59.  
  60. from django.conf.urls import patterns, include, url
  61. from django.views.generic import ListView, DetailView
  62. from blog.models import Post
  63. from blog.views import PostDetailView
  64.  
  65. urlpatterns = patterns('',
  66.     url(r'^$', ListView.as_view(
  67.         queryset=Post.objects.all(),
  68.         context_object_name="posts_list"),
  69.         name="home"
  70.     ),
  71.     url(r'^post/(?P<slug>[a-zA-Z0-9-]+)/$', PostDetailView.as_view(
  72.         queryset=Post.objects.all(),
  73.         context_object_name="post"),
  74.         name="post"
  75.     ),
  76. )
  77.  
  78.  
  79. -- post_list.html
  80.  
  81. {% extends "base.html" %}
  82.  
  83. {% block content %}
  84.     {% for post in posts_list %}
  85.       <h2><a href="{% url post slug=post.slug %}">{{ post.title }}</a></h2>
  86.       {% if post.post_type == 'p' %}
  87.         {{ post.body|safe|truncatewords:20 }}
  88.       {% endif %}
  89.       {% if post.post_type == 'v' %}
  90.         {{ post.embed_code|safe }}
  91.       {% endif %}
  92.       {% if post.post_type == 'i' %}
  93.         <p><img src="{{ post.image_url }}" /><p>
  94.       {% endif %}
  95.       {% if post.post_type == 'q' %}
  96.         <blockquote>{{ post.body|safe|truncatewords:20 }}</blockquote>
  97.         <p>{{ post.author }}</p>
  98.       {% endif %}
  99.       <p>
  100.         {{ post.created_at }} |
  101.         {% with total=post.comment_set.all|length %}
  102.             {{ total }} comment{{ total|pluralize }}
  103.         {% endwith %}
  104.       </p>
  105.     {% endfor %}
  106. {% endblock %}
Advertisement
Add Comment
Please, Sign In to add comment