Python 如何避免在Django中重复相同的代码块?

Python 如何避免在Django中重复相同的代码块?,python,django,django-templates,django-views,Python,Django,Django Templates,Django Views,我的4个函数中都有相同的代码块,有没有办法避免重复相同的代码块 以下是相同的代码块: def function_name(): ...some code... hot_news_48h = h_mostViewed(48, News, '-pv') hot_news_1w = w_mostViewed(1, News, '-pv') ...some code... return render(request, "template_name.html", {

我的4个函数中都有相同的代码块,有没有办法避免重复相同的代码块

以下是相同的代码块:

def function_name():
    ...some code...
    hot_news_48h = h_mostViewed(48, News, '-pv')
    hot_news_1w = w_mostViewed(1, News, '-pv')
    ...some code...

return render(request, "template_name.html", {
         ...some code...
        'hot_news_48h': hot_news_48h,
        'hot_news_1w': hot_news_1w,

         ...some code...

    })
以下是功能1:

def newsDetailView(request, news_pk):
    news = get_object_or_404(News, id=news_pk)
    tags = news.tag.annotate(news_count=Count('news'))
    News.objects.filter(id=news_pk).update(pv=F('pv') + 1)

    hot_news_48h = h_mostViewed(48, News, '-pv')
    hot_news_1w = w_mostViewed(1, News, '-pv')

    relative_news = News.objects.filter(tag__id__in=news.tag.all()).exclude(id=news_pk)[:6]

    return render(request, "news_detail.html", {
        'news': news,
        'tags': tags,

        'hot_news_48h': hot_news_48h,
        'hot_news_1w': hot_news_1w,

        'relative_news': relative_news
    })
下面是函数2:

def tagNewsList(request, tag_pk):
    tag = get_object_or_404(Tag, pk=tag_pk)
    news_list = News.objects.filter(tag=tag)

    hot_news_48h = h_mostViewed(48, News, '-pv')
    hot_news_1w = w_mostViewed(1, News, '-pv')


    return render(request, "tags_list.html", {
        'news_list': news_list,
        'tag': tag,

        'hot_news_48h': hot_news_48h,
        'hot_news_1w': hot_news_1w,

    })

有朋友知道如何避免吗?非常感谢

非常感谢@Lemayzeur

我最终通过使用{%include news\u rank.html%}+context\u处理器解决了这个问题。它为我节省了大量代码


我今天学习了如何创建自定义上下文处理器。

是否要避免重复该代码块或其他内容?为什么要合并它们?如果你在模板中需要它们,你可以通过上下文处理器发送它们一次,它们将可用性
hot\u news\u 48h
hot\u news\u 1w
与发布的任何视图都没有关联,它们不使用视图中的任何变量,最好使用Yes,我想避免重复。非常感谢您的建议:我最终通过使用{%include news\u rank.html%}+context\u处理器解决了这个问题。它为我节省了大量代码。感谢您的指导。我今天又学到了一件事!非常感谢。