(转)Django ====> 实战学习篇十三 分页(Paginator)处理;Django使用内置的admin

原文地址:http://blog.csdn.net/thinkinside/article/details/7246621

源代码下载地址:留言写下邮箱地址,一天内会发送给你全部源代码


分页(Paginator)

  • 订单或者其他越来越多的时候需要分页处理;
  • 分页是web应用的常用手法,django提供了一个分页器类Paginator(django.core.paginator.Paginator),很容易实现分页的功能,该类有两个构造参数,一个是数据的集合,一个是每页放多少数据;
  • 使用方法集合如下:
    $python manage.py shell
    
    >>> from django.core.paginator import Paginator
    
    >>> objects = ['john', 'paul', 'george', 'ringo']
    
    >>> p = Paginator(objects, 2)      #每页两条数据的一个分页器
    >>> p.count        #数据总数
    4
    
    >>> p.num_pages      #总页数
    2
    
    >>>p.page_range       #页码的列表
    [1, 2]
    
    >>> page1 = p.page(1)     #第1页
    >>> page1
    
    <Page 1 of 2>
    
    >>> page1.object_list     #第1页的数据
    ['john', 'paul']
    
    >>> page2 = p.page(2)
    
    >>> page2.object_list      #第2页的数据
    ['george', 'ringo']
    
    >>> page2.has_next()     #是否有后一页
    False
    
    >>> page2.has_previous()   #是否有前一页
    True
    
    >>> page2.has_other_pages()   #是否有其他页
    True
    
    >>> page2.next_page_number()  #后一页的页码
    3
    
    >>> page2.previous_page_number()  #前一页的页码
    
    1
    
    >>> page2.start_index()   # 本页第一条记录的序数(从1开始)
    
    3
    
    >>> page2.end_index()    # 本页最后录一条记录的序数(从1开始)
    
    4
    
    >>> p.page(0)               #错误的页,抛出异常
    ...EmptyPage: That page number is less than 1
    
    >>> p.page(3)              #错误的页,抛出异常
    ...EmptyPage: That page contains no results
  • 前边scaffold生成的内容里边已经包含了分页的功能,以后可以在view函数和模板中使用分页器这个类了。

内置的Admin管理用户

  • 到目前为止,我们开发的所有功能都是匿名访问的,这显然不够安全。通常我们会要求注册的用户通过用户名和密码登录,只有登录后的用户才可以管理产品。套用专业的说法就是:第一步是认证,验证用户是否是他所宣称的那个人;第二步是授权,验证用户是否拥有执行某种操作的权限。
  • 1.4版本的django中:首先修改settings文件:
    INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        #'django.contrib.sites',
        #'django.contrib.messages',
        #'django.contrib.staticfiles',
        
        # Uncomment the next line to enable the admin:
        'django.contrib.admin',     这一行本来是注释着的 现在给注释去掉
        # Uncomment the next line to enable admin documentation:
        # 'django.contrib.admindocs',
        'depot.depotapp',
        'django-groundwork',
        'djangorestframework',
    )
  • 然后修改urls.py文件:
    from django.contrib import admin
    admin.autodiscover()

      url(r'^admin/', include(admin.site.urls)),

    urls文件中有这三行,我们把之前有的注释给去掉就行了
  • 然后进行命令:
    python manage.py syncdb 

    创建数据库表,过程中会提示进行创建管理员。

  • 管理员也可以手动创建:
    $ python manage.py createsuperuser
    Username (Leave blank to use 'holbrook'): 
    E-mail address: a@b.com
    Password: 
    Password (again): 
    Superuser created successfully.
    holbrook-wongdemacbook-pro:depot holbrook$ python manage.py syncdb
    Creating tables ...
    Creating table auth_permission
    Creating table auth_group_permissions
    Creating table auth_group
    Creating table auth_user_user_permissions
    Creating table auth_user_groups
    Creating table auth_user
    Creating table auth_message
  • 此时访问http://localhost:8000/admin/,就可以看到中文的管理界面了。
posted @ 2012-11-27 15:24  事件轮询,回不到过去  阅读(2011)  评论(0编辑  收藏  举报