zoukankan      html  css  js  c++  java
  • django-admin

    Django的管理员模块是Django的标准库django.contrib的一部分。这个包还包括其它一些实用的模块:

    django.contrib.auth
    django.contrib.sessions
    django.contrib.comments
     
    激活admin模块的方法是:
    1. 在INSTALLED_APPS设置文件中,加入'django.contrib.admin'
    2. 再添加
    'django.contrib.auth',
    'django.contrib.contenttypes'
    'django.contrib.sessions'
    因为admin模块依赖
    3. 在MIDDLEWARE_CLASSES属性中添加
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware'
    'django.contrib.auth.middleware.AuthenticationMiddleware'.
    也是因为依赖
    4. 运行python manage.py syncdb,用于创建为admin等模块创建新的数据库表。
    因为apps中有auth模块,会要求你创建一个超级用户。如果你取消这步,
    也可以运行python manage.py createsuperuser。当且仅当,你安装了auth模块。
    5. 在urls.py中设置admin映射
    # Include these import statements...
    from django.contrib import admin
    admin.autodiscover()
     
    # And include this URLpattern...
    urlpatterns = patterns('',
        # ...
        (r'^admin/', include(admin.site.urls)),
        # ...
    )
     
    6. 记住在你的模块中增添admin模板文件,可以复制django自带模板,注意在模块路径中添加
    admin文件夹。
    D:Python27Libsite-packagesdjangocontribadmin emplatesadminase_site.html
     
    7. 运行python manage.py runserver,网址中输入http://localhost:8000/admin/
     
    8. admin界面默认是显示英语,如果要显示你需要的语言:
    在MIDDLEWARE_CLASSES属性中添加'django.middleware.locale.LocaleMiddleware',并确保它
    排列在SessionMiddleware后面。重新刷新admin页面
     
    在admin页面中管理models模块:
    1. 需要在你的app下创建一个admin.py文件,并对你的model类进行注册
    from django.contrib import admin
    from mysite.books.models import Publisher, Author, Book
     
    admin.site.register(Publisher)
    admin.site.register(Author)
    admin.site.register(Book)
     
    2. 当你在project文件夹中添加新的文件时,需要重启server才能生效。
     
    3. 如果想要你的admin界面中的添加数据功能生效,需要在MIDDLEWARE_CLASSES属性中添加
        'django.contrib.messages.middleware.MessageMiddleware',
     
    自定义admin模块的显示
    1. 取消在添加数据时,每一个字段都需要输入的限制
    在model类中做相应的修改就可以了:
    class Author(models.Model):
        first_name = models.CharField(max_length=30)
        last_name = models.CharField(max_length=40)
        email = models.EmailField(blank=True)
    只需要在字段声明中,设置blank=True,默认是False
     
     
    关于NULL与空字符串的区别
    在数据库操作中,NULL和空字符串""是两上不同的概念,有些数据库类型即能接受NULL值,又能接受
    空字符串类型,例如,varchar类型,到底什么时候使用这两者,久而久之,容易造成数据的不一致,为
    了避免这样的情况,Django默认是把blank=True这样的字段,统一做为空字符串插入到数据库中。同
    时,在创建数据表的时候,所有字段统一默认使用NOT NULL。
     
    但是,当遇到时间,日期类型的时候,空字符串反而会出错。这个时候,又需要使用NULL,只需要在model
    字段声明中加入:
    publication_date = models.DateField(blank=True, null=True)
    一旦你加入null=True声明,这样就相当于改变了数据库表结构,类似SQL语句中的
    alter table books_book modify publication_date date null;
    然而之前说过,Django的python manage.py syncdb只能用表创建新表,不能更改表结构,所以这时你需要
    在数据库中进行更新表结构操作。
     
    在admin界面的编辑页面中,字段名字的显示是根据model类中的变量名来显示的,大写第一个字母,把下划线改
    成空格显示出来。自定义显示可以使用verbose_name参数
    email = models.EmailField(blank=True, verbose_name='e-mail')
     
    使用ModelAdmin来管理model在admin页面中的显示
    • 自定义chanle list界面
    ModelAdmin类似界面管理类,可以定义不同的显示细节。用法如下:
     
      
    from django.contrib import admin
    from mysite.books.models import Publisher, Author, Book

    class AuthorAdmin(admin.ModelAdmin):
        list_display = ('first_name', 'last_name', 'email')#把字段信息全部显示出来
        search_fields = ('first_name', 'last_name') #添加search bar,在指定的字段中search
    class BookAdmin(admin.ModelAdmin):
        list_display = ('title', 'publisher', 'publication_date')
        list_filter = ('publication_date',)#页面右边会出现相应的过滤器选项
        date_hierarchy = 'publication_date' #只接受日期类型的字段名
        ordering = ('-publication_date',) #排序

    admin.site.register(Publisher)
    admin.site.register(Author, AuthorAdmin)
    admin.site.register(Book, BookAdmin)
    • 自定义edit form界面
    fields = ('title', 'publisher', 'authors', 'publication_date') #edit界面就按这个顺序显示
     
    还可以定义可编辑的字段
    fields = ('title', 'authors', 'publisher')
    这样Django会自动给publication_data设置为null,记得null=True设置为null值
     
    当遇到many-to-many的多选的字段类型时,Django自动提供上图中的选择方式,不过还可以
    选择用其它方式来进行多选,这种方式更加直观,不过只能作用于many-to-many的多选字段,
    不能应用于foreignkey字段。
    filter_horizontal = ('authors',)
     
    当然也有filter_vertical...
     
     
    对于ForeighKey字段,也有相应的设置,用来输入字段的ID,点击边上的
    放大镜图标,也会弹出选择框
    raw_id_fields = ('publisher',)

    关于用户,组,权限

    Django提供了很详细的权限设置方案。包括对每一张表的控制权限。
     

     

     
  • 相关阅读:
    设计模式之_6大设计原则(转)
    Django-ORM多表操作(进阶)
    03-django模型(1)
    02-Django基础知识
    web开篇
    body标签中的相关标签
    01-前端初识
    Flask简述
    浅析设计模式
    Python的单例模式
  • 原文地址:https://www.cnblogs.com/muzinan110/p/5015616.html
Copyright © 2011-2022 走看看