美文网首页Django开发个人网站pythonpython学习实践
Django学习记录第三天—xadmin配置

Django学习记录第三天—xadmin配置

作者: Rokkia | 来源:发表于2017-06-22 20:40 被阅读7929次

    上一篇中我们有讲到http://127.0.0.1:8000/admin 这个地址,github上有一个更好看、功能更强大的库来管理后台,它的名字叫xadmin,我也是听说,一起来看看吧,它有多强大。

    安装

    通过文档我们可以发现,我们有两种方法可以进行安装。

    1. 使用pip install 安装
    2. 下载源码安装

    这两种安装的区别在于
    pip安装需要执行

    pip install django-xadmin
    

    源码安装,你会发现你下载的目录下有一个requirements.txt文件,你需要执行

    pip install -r requirements.txt
    

    然后将文件导入到项目中,like this

    image.png

    为了方便管理,我们创建了django_extra文件夹,与apps一样需要在settings中设置。这里不在重复执行了。

    之后的操作源码跟pip操作都是一样的。

    然后按照文档,我们需要将其配置到settings中的INSTALLED_APPS中

    INSTALLED_APPS = [
       ...
       ... 
       ...
        'xadmin',
        'crispy_forms',
    ]
    

    这一步之后只需要再配置一下url就OK了
    import xadmin

    urlpatterns = [
    # url(r'^admin/', admin.site.urls),
    url(r'^xadmin/', xadmin.site.urls),
    ]

    到此为止我们就算是配置完成了,运行一下看看效果。

    ProgrammingError at /xadmin/
    (1146, "Table 'newmxonline.xadmin_usersettings' doesn't exist")
    

    这是个什么问题?

    其实到这里还没有完成,我们还需要更新一下数据库,老方法

    makemigrations
    
    migrate
    

    我们会发现数据中多了4张表。

    image.png

    OK,运行看一下,这里我们直接访问http://127.0.0.1:8000/xadmin/
    来比较两个有什么区别。

    xadmin admin center Django自带admin center

    看起来也没什么变化吗,这只是开始,我们来写简单配置看一下。
    说实话django的文档有点坑。好多都找不到。

    散了不指望它了。

    配置
    • 首先我们改一下字体。

    我们来到settings 中下位置可以看到这样几个参数

    LANGUAGE_CODE = 'en-us'
    TIME_ZONE = 'UTC'
    USE_I18N = True
    USE_L10N = True
    USE_TZ = True
    

    我们只需要将其改为

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

    看一下效果。

    image.png

    恩 好看多了!
    但是空空如野,我们怎么进行管理呢?

    • 添加管理数据
      这里我们需要到我们app中添加一个adminx.py的文件。注意哦,adminx.py不要输错哦。
      导入 xadmin与要绑定的model,因为这里我们只有一个UserProfile model,我们就导入这一个看看效果。
    import xadmin
    from .models import UserProfile
    

    然后我们需要创建class,class命名格式最好为类名+Admin

    class UserProfileAdmin(object):
        pass
    

    最后我们需要注册一下。

    xadmin.site.register(UserProfile, UserProfileAdmin)
    

    OK,设置完成我们来看一下效果。

    image.png

    跟刚才比我们多了一个,users块,点开看看用户里面有什么。

    root是不是很眼熟,这就是我们的superuser。我们可以点击去进行管理,数据更改或者权限添加等。

    有没有发现用户上面的USERS很不爽,如果是中文就好了。我们来改一下。

    • 修改块头为中文
      1.我们在apps.py中添加verbose_name = u'你想要的名字'
    image.png

    2.我们在__init__.py中添加

    default_app_config='users.apps.UsersConfig'
    

    看一下效果。

    image.png

    完美

    突然发现这一块好空哦。添加点东西?

    image.png

    怎么添加呢

    • 添加显示字段

    我们需要来到我们的adminx.py中,将我们定义的xxxAdmin修改成这样

    class UserProfileAdmin(object):
        list_display = ['id', 'username', 'email' ]  #添加要显示的列
        search_fields = ['id', 'username', 'email' ]  #要查询的列
        list_filter = ['id', 'username', 'email' ]  #要筛选的列
    

    看一下效果吧

    image.png

    看看还有什么不顺眼的地方

    image.png

    这两个地方有点奇怪呢,改一下。
    我们在adminx.py中添加下面代码即可。

    from xadmin import views
    
    class GlobalSetting(object):
        site_title = '鲸之网'   #设置头标题
        site_footer = '鲸之网'  #设置脚标题
    
    xadmin.site.register(views.CommAdminView, GlobalSetting)
    

    OK看一下效果。

    image.png

    最后一个

    收缩
    • 可收缩列

    只需要在刚才定义的GlobalSetting中添加menu_style = 'accordion'

    class GlobalSetting(object):
        site_title = '鲸之网'   #设置头标题
        site_footer = '鲸之网'  #设置脚标题
        menu_style = 'accordion'
    

    OK,看一下效果

    image.png

    OK,基本完美了。明天继续!看一下登录OR注册

    我的学习总结,争取坚持30天

    相关文章

      网友评论

      • 朔望两弦:用django2.0 & python3.6 实验了一下,貌似不用在adminx.py绑定UserProfile就可以用,相反如果绑定还会报错
        xadmin.sites.AlreadyRegistered: The model UserProfile is already registered
        一潸:英雄所见略同。
      • XF_Said:在xadmin后台添加用户信息,发现只能添加用户名和密码,并且以UserProfile作为外键的时候,在后台选择UserProfile数据的时候也选择不了,请问你是怎么解决的呢?
        卓越笔记:@XF_Said 在xadmin后台添加用户信息,发现只能添加用户名和密码。 这个问题你解决了吗?还有 xadmin 后台怎么注册 继承的 userprofile
        XF_Said:好吧,xadmin的用户外键的形式是输入之后检索,admin的是选择列表,不一样哈:joy:
      • 26c1a69c195b:页面app名称修改这块实现不了,望大神帮帮忙,已经弄了好几天了
        蒲小帅丶:class Article(models.Model):
        title = models.CharField(max_length=50, default='', verbose_name=u"标题")
        content = models.TextField(max_length=500, default='', verbose_name=u"内容")

        class Meta:
        verbose_name = u"文章"
        verbose_name_plural = verbose_name


        def __str__(self):
        return self.title
        verbose_name = u"文章"这个就是修改在页面app的名称
      • 请叫我老曹:(Regist_env) F:\User\Administrator\xadmin>pip3 install django-xadmin
        Collecting django-xadmin
        Using cached django-xadmin-0.5.0.tar.gz
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
        File "<string>", line 1, in <module>
        File "C:\Users\ADMINI~1\AppData\Local\Temp\pip-build-ff_8d1xp\django-xadmin\setup.py", line 11, in <module>
        long_description=open('README.rst').read(),
        UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 3256: illegal multibyte sequence

        ----------------------------------------
        Command "python setup.py egg_info" failed with error code 1 in C:\Users\ADMINI~1\AppData\Local\Temp\pip-build-ff_8d1xp\django-xadmin\

        (Regist_env) F:\User\Administrator\xadmin>

        我安装的时候怎么会报错
        请叫我老曹:@__鲸_ 好的 谢谢
        Rokkia:@请叫我老曹 http://blog.sina.com.cn/s/blog_537517170102x11q.html 可以看一下这篇文章 查找一下这个错误 'gbk' codec can't decode byte 0xa4 in position 3256: illegal multibyte sequence
      • 8ada97ac2abe:您好,请问阁下对xadmin的插件开发熟悉吗,xadmin的图表插件我想用柱状图可是不会
        8ada97ac2abe: @__鲸_ 感谢,一起努力~
        Rokkia:@OURINES Sorry还没有研究那么深,不过我看了一下文档https://xadmin.readthedocs.io/en/latest/make_plugin.html#id2,里面有讲,你可以看一下里面的插件实例,里面讲了在哪里添加html,哪里添加js,以及使用什么来判断插件是否启用。还有就是看你需要说明插件,在插件开发中可以选择你需要的View进行注册。

      本文标题:Django学习记录第三天—xadmin配置

      本文链接:https://www.haomeiwen.com/subject/pysfcxtx.html