【问题标题】:Django problematic viewDjango 有问题的视图
【发布时间】:2011-10-24 19:58:43
【问题描述】:

我有这个 Django 通用视图:

def post_list(request, page=0, paginate_by=1, **kwargs):
page_size = getattr(settings,'BLOG_PAGESIZE', paginate_by)
return list_detail.object_list(
    request,
    queryset=Post.objects.published(),
    paginate_by=page_size,
    page=page,
    **kwargs
)
post_list.__doc__ = list_detail.object_list.__doc__

我想将它发送到当前年份以在模板中使用它。谁能帮帮我?

【问题讨论】:

    标签: python django django-templates django-views django-generic-views


    【解决方案1】:

    通过extra_context 传递当前年份:

    from datetime import datetime
    year = datetime.now().year
    

    【讨论】:

      【解决方案2】:

      您的核心问题是使用通用视图 - http://stdout.be/2010/05/25/generic-views-suck/

      def post_list(request, page=0, paginate_by=1, **kwargs):
          page_size = getattr(settings,'BLOG_PAGESIZE', paginate_by)
          queryset = Post.objects.published()
          paginator = Paginator(queryset, page_size) 
          objects = paginator.page(page)
      
          #This stuff is only necessary if you aren't trapping page in the URL conf
          #page = request.GET.get('page')
          #try:
          #    objects = paginator.page(page)
          #except PageNotAnInteger:
          #    # If page is not an integer, deliver first page.
          #    objects = paginator.page(1)
          #except EmptyPage:
          #    # If page is out of range (e.g. 9999), deliver last page of results.
          #    objects = paginator.page(paginator.num_pages)
      
          return render_to_response('mytemplate.html', {"objects": objects, "year": datetime.now().year}, context=RequestContext(request))
      

      与原始代码相比,您更愿意维护或扩展哪些代码?

      【讨论】:

        猜你喜欢
        • 2014-07-22
        • 2016-12-21
        • 1970-01-01
        • 2012-10-23
        • 2013-04-14
        • 2016-12-11
        • 2015-06-02
        • 2019-04-19
        • 1970-01-01
        相关资源
        最近更新 更多