django 승급 기교

1937 단어

권한 제어

  • 권한 제어가 필요한 방법이 많을 때: 권한 제어 중간부품을 사용할 수 있고permission Middle Ware
  • 소량의 방법만 제어가 필요할 때: 장식기 방법을 사용하여 권한 제어 함수를 검증이 필요한 방법에 불러오기 전
  • 페이지 분할기(paginator)

  • 페이지 나누기의 대상을 생성합니다: p =paginator(objects,nums) 그 중에서objects는 페이지를 나누려는 대상 목록이고,nums는 페이지당 수용 가능한 대상 수량
  • django가 제시한 공식 문서
  • >>> from django.core.paginator import Paginator
    >>> objects = ['john', 'paul', 'george', 'ringo']
    >>> p = Paginator(objects, 2)# , obj, 
    >>> p.count# obj 
    4
    >>> p.num_pages# 
    2
    >>> p.page_range# 
    [1, 2]
    >>> page1 = p.page(1)# 
    >>> page1
    
    >>> page1.object_list# obj 
    ['john', 'paul']
     
    >>> page2 = p.page(2)
    >>> page2.object_list
    ['george', 'ringo']
    >>> page2.has_next()# 
    False
    >>> page2.has_previous()# 
    True
    >>> page2.has_other_pages()# 
    True
    >>> page2.next_page_number()# , , 
    Traceback (most recent call last):
    ...
    EmptyPage: That page contains no results
    
  • 프로젝트에서 최적화된 페이지 나누기 방법
  • def my_pagination(request, queryset, display_amount=15, after_range_num = 5,bevor_range_num = 4):
        # 
        paginator = Paginator(queryset, display_amount)
        try:
            # request page 
            page =int(request.GET.get('page'))
        except:
            # 1
            page = 1
        try:
            # 
            objects = paginator.page(page)
        # 
        except EmptyPage:
            # 
            objects = paginator.page(paginator.num_pages)
        # 
        except PageNotAnInteger:
            # 
            objects = paginator.page(1)
        # 
        if page >= after_range_num:
            page_range = paginator.page_range[page-after_range_num:page+bevor_range_num]
        else:
            page_range = paginator.page_range[0:page+bevor_range_num]
        return objects,page_range
    

    좋은 웹페이지 즐겨찾기