html - 如何获取我的 Django 博客中的上一篇和下一篇文章?

标签 html django python-2.7 templates

我知道 Django 有 get_previous_by_FOO 和 get_next_by_FOO 方法,但我不知道如何在我的模板和 View 中使用它们。所以,请帮助我使这两种方法适用于我的项目。

我正在运行 Django1.7Python2.7,我的应用名称是 blog 这是我对应的文件:

博客/views.py

def view_post(request, slug):
    post = get_object_or_404(Post, slug=slug)
    return render_to_response('blog/blog_post.html',
            {
                'post':post,
            },
            context_instance=RequestContext(request))



class PublishedPostMixin(object):
    def get_queryset(self):
        return self.model.objects.live()


class PostDetailView(PublishedPostMixin,DetailView):
    model = Post

博客/模型.py

class Post(models.Model):
    created_at = models.DateTimeField(auto_now_add=True, editable=False)
    updated_at = models.DateTimeField(auto_now=True, editable=False)
    title = models.CharField(max_length=255)
    slug = models.SlugField(max_length=255,unique=True) 
    content = MarkdownField()
    published = models.BooleanField(default=True)
    author = models.ForeignKey(User, related_name="posts")
    tags = models.ManyToManyField(Tag)

    class Meta:
        ordering = ["-created_at", "title"]

    def __unicode__(self):
        return self.title

    def save(self, *args, ** kwargs):
        if not self.slug:
            self.slug = slugify(self.title) #title become the slug
        super(Post, self).save(*args,**kwargs)

    @models.permalink
    def get_absolute_url(self):
        return ("blog:detail",(),{'slug':self.slug
                            })

博客/urls.py

urlpatterns = patterns('',
    url(r"^(?P<slug>[\w-]+)/$",view_post, name="detail"),
)

模板

<p>
   {{ post.content|markdown }}
</p>
<ul class="pager">
   <li class="previous">
      <a href="{{post.get_previous_by_created_at}}">&larr; Previous Posts</a>
   </li>
   <li class="next">
      <a href="{{post.get_next_by_created_at}}">Next Posts &rarr;</a>
   </li>
</ul>

最佳答案

最后我通过在模板中引入 url 标签解决了这个问题。这是我修改后的模板。

{% load url from future %}    
<ul class="pager">
        {% if post.get_next_by_created_at %}
            <li class="previous">
                 <a href="{% url 'blog:detail' post.get_next_by_created_at.slug %}">&larr; Previous Post</a>
            </li>
        {% endif %}
        {% if post.get_previous_by_created_at %}
            <li class="next">
                 <a href="{% url 'blog:detail' post.get_previous_by_created_at.slug %}">Next Post &rarr;</a>
            </li>
        {% endif %}
    </ul>

关于html - 如何获取我的 Django 博客中的上一篇和下一篇文章?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29735069/

相关文章:

javascript - 如何根据类似的类获取容器内元素的索引?

Django1.8和Mongoclient settings.DATABASES配置不正确。

python - 请帮助我理解 Python 代码

list - Python列表查找具有接近值的元素

javascript - JS : displaying an infinitely long coordinating system (grid)

javascript - document.element 中的空引用错误

javascript - 在 ng-click 上设置并显示当前数据?

php - 网站框架

python - 翻译 'Django-Oscar'

python - 创建 3 阶 numpy 数组