zoukankan      html  css  js  c++  java
  • django站点管理

    站点管理——超级用户的管理界面,可以让你添加,删除,管理网站内容;

    一、激活管理界面

    1、在settings.py中进行如下配置:

    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'books',
    )
    
    MIDDLEWARE_CLASSES = (
         'django.contrib.sessions.middleware.SessionMiddleware',
         'django.middleware.common.CommonMiddleware',
         'django.middleware.csrf.CsrfViewMiddleware',
         'django.contrib.auth.middleware.AuthenticationMiddleware',
         'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
         'django.contrib.messages.middleware.MessageMiddleware',
         'django.middleware.clickjacking.XFrameOptionsMiddleware',
         'django.middleware.security.SecurityMiddleware',
    )

    2、运行 python manage.py syncdb,生成管理界面额外的数据库表;(在Django 1.9及未来的版本种使用migrate代替syscdb.即:python manage.py migrate)

    3、运行python manage.py createsuperuser来创建一个admin的用户账号;

    4、配置url

    from django.contrib import admin
    admin.autodiscover()
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    ]

    5、启动服务器并且访问127.0.0.1:8000/admin/,登录之前设定的超级用户名和密码,然后可见:

    6、在 MIDDLEWARE_CLASSES 中的  'django.contrib.sessions.middleware.SessionMiddleware', 之后添加  'django.middleware.locale.LocaleMiddleware',  就可以将页面上的语言类型翻译成你想要的语言,如下;

    7、 接下来你可以根据引导查看、修改、删除、增加一些内容,这里就不一一解释了;接下来呢,我们要将我们的模块添加到管理工具中;上个例子中我们添加了三个模块:Auther,Publisher和Book;在books目录下打开名为admin.py的文件,然后输入以下代码:

    
    
    #    -*- coding:utf-8 -*-

    from django.contrib import admin
    from books.models import Publisher,Author,Book
    # Register your models here.
    
    #通知管理界面为这些模块逐一提供界面
    admin.site.register(Publisher)
    admin.site.register(Author)
    admin.site.register(Book)

     8、启动服务器并且访问127.0.0.1:8000/admin/,并且根据引导查看或操作一些内容:

        

    9、如果我们想将一个字段设为可选(非必填)的,怎么办呢?比如说我们想将Anthor表中的email字段设成这种属性,只需这样做;

    class Author(models.Model):
        first_name = models.CharField(max_length= 30)
        last_name = models.CharField(max_length= 40)
        email = models.EmailField(blank= True) #设为可选,即可为空,其他的选项默认为False,不能为空

     如果你要设置日期型,时间型和数字型等不接受空字符串的数据类型为可选(可以为空)的,那么就可以使用 null=True,以上两种可以一起使用,不过如果你要使用null=True,就要更新数据库;

    10、如果说你觉得django默认的表名不够贴切,你想要改动的话(比如说将Author表中的‘email’字段改变为'e-mail')就可以这样:

    email = models.EmailField(blank= True,verbose_name= 'e-mail')
    或
    email = models.EmailField('e-mail',blank= True)

    后面 这一种方法不适用于MantToManyField和ForeignKey这样的字段,因为他们第一个参数必须是模块类,这样的话就必须显式地使用verbose_name这个参数名称

    11、自定义ModelAdmi类

     比如说我们查看Author表的时候显示为  ;那我们想让email也显示怎么办呢:打开admin.py,并如下修改:

    class AuthorAdmin(admin.ModelAdmin):
        list_display = ('first_name','last_name','email')
    
    #通知管理界面为这些模块逐一提供界面
    admin.site.register(Author,AuthorAdmin)

    刷新得到:

    12、接下来我们在给Author添加一个搜索栏:如下:

    class AuthorAdmin(admin.ModelAdmin):
        list_display = ('first_name','last_name','email')
        search_fields = ('first_name','last_name'

    13、之后,我们来为Book页创建一个过滤器:如下:

    class BookAdmin(admin.ModelAdmin):
        list_display =  ('title','publisher','publication_date')#
        list_filter = ('publication_date',)
    
    admin.site.register(Book,BookAdmin)

     

    接下来,我们就可以在右边的日期过滤器中查看book列表;

    另一种添加时间日期过滤器的方法为: date_hierarchy;如下;

    class BookAdmin(admin.ModelAdmin):
        list_display =  ('title','publisher','publication_date')
        list_filter = ('publication_date',)
        date_hierarchy = 'publication_date'
        ordering = ('-publication_date',)  #排序方式

    过滤器不仅仅适用于日期型,同样适用于其他字段;(布尔值和外键)

    class BookAdmin(admin.ModelAdmin):
        list_display =  ('title','publisher','publication_date')
        list_filter = ('publisher',)
        date_hierarchy = 'publication_date'
        ordering = ('-publication_date',)

    14、接下来我们来实现自定义表单:,首先我们先自定义字段顺序,字段的顺序默认是和模块中定义的顺序一致的;接下来我们对其进行改变:

    class BookAdmin(admin.ModelAdmin):
        list_display =  ('title','publisher','publication_date',)
        list_filter = ('publisher',)
        date_hierarchy = 'publication_date'
        ordering = ('-publication_date',)
        fields = ('title','publisher','authors')

      

    除此之外呢,我们还可以改变针对多对多关系的选择方式,比如说anthors字段:(要先删除之前的fields)

    filter_horizontal = ('authors',)

    filter_horizontal类似的还有filter_vertical方法,区别只是水平排列和竖直排列的问题,但是filter_horizontal和filter_vertical只能用于多对多字段,不可以用于外键;而默认用下拉框来展示的外键,如果很多的话加载时间很大,我们可以用以下方法解决:

    raw_id_fields = ('publisher',) 

      

  • 相关阅读:
    hihoCoder #1062 : 最近公共祖先·一
    hihoCoder #1050 : 树中的最长路
    hihoCoder #1049 : 后序遍历
    108 Convert Sorted Array to Binary Search Tree 将有序数组转换为二叉搜索树
    107 Binary Tree Level Order Traversal II 二叉树的层次遍历 II
    106 Construct Binary Tree from Inorder and Postorder Traversal 从中序与后序遍历序列构造二叉树
    105 Construct Binary Tree from Preorder and Inorder Traversal 从前序与中序遍历序列构造二叉树
    104 Maximum Depth of Binary Tree 二叉树的最大深度
    102 Binary Tree Level Order Traversal 二叉树的层次遍历
    101 Symmetric Tree 判断一颗二叉树是否是镜像二叉树
  • 原文地址:https://www.cnblogs.com/cencenyue/p/7920229.html
Copyright © 2011-2022 走看看