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

     2023-02-24     296

关键词:

【中文标题】如何在我的 Django 博客中获取上一篇和下一篇文章?【英文标题】:How to get the previous and next post in my Django blog? 【发布时间】:2015-06-26 10:07:40 【问题描述】:

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

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

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

blog/models.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
                            )

blog/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>

【问题讨论】:

那么,会发生什么? href 字段是否为空? href 字段像这样localhost:8000/blog/current_post/next_or_previous_post 获得下一篇/上一篇文章的倾斜度 【参考方案1】:

最后我通过在模板中引入 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>

【讨论】:

对于 Django 1.11 % load url from future % 不再需要。

wordpress 如何在子页面中导航上一页和下一页

】wordpress如何在子页面中导航上一页和下一页【英文标题】:wordpresshowtonavigatepreviouspageandnextpagewithinthechildpages【发布时间】:2011-06-0223:04:59【问题描述】:我目前正在使用plugin下一页将上一页下一页链接添加到我的wordpress网站... 查看详情

url';s到类别中的下一篇和上一篇文章

ThissnippetshowsyouhowtogetpreviousandnextpostincategoryURL.<!--prevpostincategory--> <?php$prev=get_permalink(get_adjacent_post(false,'',false)); if($prev!=get_permalink()){?><aid="navi-left"href="<?phpecho$prev;?>">&... 查看详情

如何在wordpress中获取下一个/上一个帖子的href和标题

】如何在wordpress中获取下一个/上一个帖子的href和标题【英文标题】:howtogetnext/previousposthrefsandtitlesinwordpress【发布时间】:2012-07-0723:41:18【问题描述】:这是关于单个帖子的视图。我正在尝试像这样设置上一篇和下一篇博文的... 查看详情

Rails:我的显示视图中的“下一篇文章”和“上一篇文章”链接,如何?

...的显示视图中的“下一篇文章”和“上一篇文章”链接,如何?【英文标题】:Rails:"Nextpost"and"Previouspost"linksinmyshowview,howto?【发布时间】:2009-08-1403:54:28【问题描述】:我是Rails的新手...微笑在我的博客应用程序... 查看详情

如何创建具有上一页和下一页预览的 ViewPager,并从预览中缩放居中

】如何创建具有上一页和下一页预览的ViewPager,并从预览中缩放居中【英文标题】:HowcanicreateViewPagerwithpreviousandnextpagepreview,andcentredonezoomedfrompreview【发布时间】:2016-05-3005:56:56【问题描述】:viewPager.setClipToPadding(false);viewPagerMus... 查看详情

如何获取sql查询当前数据上一条和下一条的记录?

参考技术A方法一:查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误):1select*fromtable_awhereid=(selectidfromtable_awhereid<$id[andother_conditions]orderbyiddesclimit1)[andother_conditions];查询下一条记录... 查看详情

asp中如何读取当前记录的上一条和下一条记录

select*fromabcwhereid=555asp如何获取当前555的上一条记录和下一条记录上一条记录的话,必须先设定排序方式为逆序的,读取最近一条小于现在这个ID的。下一条记录的话,必须先设定排序方式为顺序的,读取最近一条大于现在这个ID... 查看详情

Symfony,上一个和下一个链接

...时需要显示第1条和第3条(上一条和下一条)的链接知道如何有效地做到这一点吗?提前致谢【问题讨论】:【参考方案1】:我能给出的最好的提示是查询日期。所以 查看详情

mysql获取上一条和下一条记录id

】mysql获取上一条和下一条记录id【英文标题】:mysqlgetpreviousandnextrecordid【发布时间】:2012-08-1606:11:15【问题描述】:我正在尝试创建一个“上一个”和一个“下一个”按钮,显示1条上一条记录和1条即将到来的下一条记录,由sq... 查看详情

实施上一篇/下一篇

...发布时间】:2012-10-0610:34:14【问题描述】:我正在从网上获取一些文章。我将它们加载到数组中并将它们传递给DetailViewController,我有2个按钮-与Mail一样,按^即可转到下一篇文章。现在我通过使用对象获取该数组的下一个对象来... 查看详情

我的个人博客网站上线啦-

传送门:http://www.loger.xyz/ 经过三个月的偷懒,终于把第一版个人博客放到服务器上了!lblog v1.0:首发,目前前台只能访问博客,分页,上一页,下一页,上一篇博客,下一篇博客!预告:v2.0,全文检索功能上线! 博客... 查看详情

如何在 django 中 html 格式化我的博客文章?

】如何在django中html格式化我的博客文章?【英文标题】:HowdoIhtmlformatmyblogpostindjango?【发布时间】:2020-12-0600:43:51【问题描述】:所以我想直接从管理页面制作一篇带有HTML格式的博客文章。例如,在models.py中,您会看到描述是... 查看详情

thinkphp如何获取当前文章的上一篇下一篇?求详解???

给楼主提供一下思路,这个其实不是很难的正常你文章对应的索引为ID,你查询的时候应该是用的$model->where('id='.**)->find();其实就是在这你只需要把id减一就是上一篇,加一就是下一篇嘛大概思路如下,手写的没测试自己... 查看详情

idea2021版本添加上一步和下一步操作到工具栏

目录一、上一步和下一步操作添加到工具栏二、上一步和下一步快捷键一、上一步和下一步操作添加到工具栏1、【File】—>【Settings】—>【Appearance&Behavior】—>【MenusandToolbars】—>【NavigationBarToolbar】—>【ToolbarRunAct... 查看详情

具有上一页和下一页边界的 ViewPager

】具有上一页和下一页边界的ViewPager【英文标题】:ViewPagerwithpreviousandnextpageboundaries【发布时间】:2012-12-0413:48:34【问题描述】:我正在设计一个包含多个页面的视图。我希望上一页和下一页的边缘如下所示,并实现两指滑动以... 查看详情

phpwordpress|自定义上一页和下一页链接(代码片段)

查看详情

sql如何获取上一条..下一条..首尾记录...

...一个ID值,要取该ID对应记录的上一条或下一条记录,语句该如何编写.....另如何取首尾记录...参考技术A获得上一条的id:selectmax(id)asidfrom[表]whereid<"[你的要查的id]"orderby[.....]获得下一条的id:selectmin(id)asidfrom[表]wherei... 查看详情

将类添加到wordpress中的上一篇文章和下一篇文章中

add_filter('next_posts_link_attributes','posts_link_attributes');add_filter('previous_posts_link_attributes','posts_link_attributes'); functionposts_link_attributes(){ return'class="styled-button"';} 查看详情