zoukankan      html  css  js  c++  java
  • django admin后台插件:django-suit入门

    去年9月底开始用django来做公司内部项目,开始对django有了一些了解,感觉django真的蛮强大的(也有很多人推荐flask,将来有空的话我会试试)。今天的话只是介绍一个小东西,django管理员后台插件:django-suit。

    用过django的同学大概都知道,admin后台那个丑到爆的界面:

    虽然程序猿不太那么讲究审美,但是这么吃藕的一个界面,反正搁我我是忍不了。不过呢,还好django扩展能力还是挺强的,有牛人开发出了suit这个插件。只需要简单的几步配置,就可以让admin后台变得美观许多。

    那么,要怎么做呢?

    首先是安装,简单粗暴的

    pip install django-suit

    即可。

    接下来需要进行一些配置工作。

    在settings.py中,INSTALLED_APPS里面第一行加入’suit’(suit必须放在'django.contrib.admin'这一行的前面,否则服务启动后admin会加载默认admin界面)。之后,如果你的django版本在1.9以下,需要加入:

    from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
    
    TEMPLATE_CONTEXT_PROCESSORS = TCP + (
        'django.core.context_processors.request',
    )

    如果是1.9以上(包含1.9),需要对TEMPLATES进行修改,加入一行:

    复制代码
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',    # <-需要这一行
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    复制代码

    据说suit在admin里设置时间的一个小bug。需要把时间格式指定一下

    DATETIME_FORMAT = 'Y-m-d H:i:s' 
    DATE_FORMAT = 'Y-m-d'

    最后别忘了把语言设置成中文的

    LANGUAGE_CODE = 'zh-Hans'
    TIME_ZONE = 'Asia/Shanghai'
    USE_I18N = True
    USE_L10N = False
    USE_TZ = True

    接下来要设置suit的配置字典。可以写在settings.py里面,不过我更习惯单独写成一个文件admin_settings.py:

    复制代码
    SUIT_CONFIG = {
        'ADMIN_NAME': '苹果树',
        'MENU': ({'label': '用户',
                  'app': '用户',
                  'models': ('UserProfile',)},
                 ),
        # 每一个字典表示左侧菜单的一栏
        # label表示name,app表示上边的install的app,models表示用了哪些models
    }
    复制代码

    当然,单独写成py文件的时候,记得在settings.py里面加上一句:

    from . import admin_settings

    (如果使用的是python2,直接import admin_settings即可)

    接下来是models.py。因为django的admin也是使用User的,所以需要对User进行扩展:

    复制代码
    from django.db import models
    from django.contrib.auth.models import User
    
    
    class UserProfile(User):
        cname = models.CharField("中文名称", max_length=30)
    复制代码

    有人喜欢在扩展模型中使用OneToOneField与User建立关系,不过我觉得直接继承起来比较方便。

    最后是admin.py:

    复制代码
    from django.contrib import admin
    from myapp import models
    
    class UserProfileAdmin(admin.ModelAdmin):
        # 定义admin总览里每行的显示信息
        list_display = ('cname', 'username', 'email')
        # 定义搜索框以哪些字段可以搜索
        search_fields = ('cname', 'username')
    
    # 引用的固定格式,注册的model和对应的Admin,Admin放在后边
    # 同样还有noregister方法:比如admin.site.noregister(Group),把group这个表在admin中去掉(默认user和group都是注册到admin中的)
    admin.site.register(models.UserProfile, UserProfileAdmin)
    复制代码

    这个文件是在你的应用中的。

    OK。大功告成,我们用

    python manage.py makemigrations
    python manage.py migrate

    同步数据库

    python manage.py createsuperuser

    创建超级管理员

    python manage.py runserver 127.0.0.1:8000

    启动项目看看。

    怎么样,这样看起来是不是就比较轻松愉快了,至少比原生的admin界面要好看吧。

    其实,我用的功能还是蛮少的,只需要添加几个用户,实际上suit可以做的事情还是很多的。如果想要了解更多,可以参考一下相关文章:

    # 入门文章:

    http://www.cnblogs.com/caseast/p/5909248.html

    # 官方文档:

    http://django-suit.readthedocs.io/en/develop/

  • 相关阅读:
    VC++中对数据类型的限制limits.h文件内容
    阿里巴巴-2015秋招研发工程师附加题
    阿里巴巴-2015秋招研发工程师附加题
    如何成为一个牛逼的程序猿
    Windows7中Java64位环境变量配置:javac不是内部命令或外部命令,也不是可运行的程序或批处理文件。
    程序员面试宝典:求十进制数字的二进制数位中包含1的个数
    程序员面试宝典:与或数值运算
    docker配置阿里云镜像
    原生JS中获取位置的方案总结
    vue项目中上拉加载和下拉刷新页面的实现
  • 原文地址:https://www.cnblogs.com/dalaoban/p/10152030.html
Copyright © 2011-2022 走看看