zoukankan      html  css  js  c++  java
  • 十、Django之Admin

     一、Django Admin 管理工具

    Django 提供了基于 web 的管理工具。

    Django 自动管理工具是 django.contrib 的一部分。你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它:

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog',
    ]
    

      django.contrib是一套庞大的功能集,它是Django基本代码的组成部分。

    二、激活管理工具

    通常我们在生成项目时会在 urls.py 中自动设置好,我们只需去掉注释即可。

    配置项如下所示:

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

     当这一切都配置好后,Django 管理工具就可以运行了。

    三、使用管理工具

    启动开发服务器,然后在浏览器中访问 http://127.0.0.1/admin/,得到如下界面:

     

    为了让 admin 界面管理某个数据模型,我们需要先注册该数据模型到 admin。比如,我们之前在 blog.models 中已经创建了模型Place,Restaurant,Waiter

    。修改blog/admin.py:

    from django.contrib import admin
    from blog.models import Blog,Author,Place,Restaurant,Waiter
    
    # Register your models here.
    admin.site.register(Place)
    admin.site.register(Restaurant)
    admin.site.register(Waiter)
    

      

    刷新后即可看到 Place,Restaurant,Waiter 数据表:

     

     

     这时,我们就可以管理数据表了。

     四、admin界面汉化

    默认admin后台管理界面是英文的,对英语盲来说用起来不方便。可以在settings.py中设置:

    1. LANGUAGE_CODE = 'zh-CN'
    2. TIME_ZONE = 'Asia/Shanghai'

    1.8版本之后的language code设置不同:

    1. LANGUAGE_CODE = 'zh-hans'
    2. TIME_ZONE = 'Asia/Shanghai'

     五、自定义展示字段

    默认只会展示class中__str__()打印的内容,但是我们可以通过扩展让其显示跟多的字段,通过在admin.py文件中新增如下内容:

    class  PlaceAdmin(admin.ModelAdmin):
        list_display =('name','address')
    
    # Register your models here.
    admin.site.register(Place,PlaceAdmin)
    

      

    这样会展示展示list_display中的内容:

     

    六、字段汉化

    我们在admin后台中看到的字段都是在models中定义的字段名称,一般为英文的字段:

    我们新增汉化内容:

    class Restaurant(models.Model):
        place = models.OneToOneField(
            Place,
            on_delete=models.CASCADE,
            primary_key=True,
        verbose_name='餐馆地址')
        serves_hot_dogs = models.BooleanField(default=False,verbose_name='供用热狗')
        serves_pizza = models.BooleanField(default=False,verbose_name='供用披萨')
    

      

    汉化后效果为:

     

    七、其他特殊设置

    1、 search_fields:指定搜索的字段

    class  PlaceAdmin(admin.ModelAdmin):
        list_display =('name','address')
        search_fields = ('name',)
    

      

     

    2、list_filter:指定列表过滤器

    class  PlaceAdmin(admin.ModelAdmin):
        list_display =('name','address')
        search_fields = ('name',)
        list_filter = ('address',)
    

      

    3、ordering:指定排序字段

    class  PlaceAdmin(admin.ModelAdmin):
        list_display =('name','address')
        search_fields = ('name',)
        list_filter = ('address',)
        ordering = ('address',)
    

      

     

  • 相关阅读:
    Anaconda安装之路——坑呀!
    初读《企业应用架构模式》——阅读笔记1
    《需求工程》阅读笔记3
    codeforces 432D. Prefixes and Suffixes(后缀数组)
    hdu 6096String(trie树)
    uva 1349 Optimal Bus Route Design(拆点,费用流)
    数据结构c语言
    六个排序算法
    c无聊编程
    文件写入与文件读取
  • 原文地址:https://www.cnblogs.com/skyflask/p/9398636.html
Copyright © 2011-2022 走看看