zoukankan      html  css  js  c++  java
  • xadmin后台管理

    xadmin的安装

    django2.0的安装(源码安装方式):

    pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2

    3.2.xadmin的设置

     (1)新建Python Package "extra_apps",把源码xadmin文件夹放到extra_apps文件夹下面,此时目录结构如下:

    (2)把extra_apps右键mark为Source Root并在settings中加入

    sys.path.insert(0,os.path.join(BASE_DIR, 'extra_apps'))

    (3)因为我们用源码的xadmin,所以要卸载之前安装的

    pip uninstall xadmin

    (4)配置路由

    把admin改成xadmin

    复制代码
    # urls.py
    
    from django.urls import path
    
    import xadmin
    
    urlpatterns = [
        path('xadmin/', xadmin.site.urls),
    ]
    复制代码

    (5)注册app

    把下面两个app注册到settings.py的INSTALLED_APPS中

    'xadmin',
    'crispy_forms'

    (6)重新生成数据库

    python manage.py makemigrations
    
    python manage.py migrate

    (7)设置成中文

    复制代码
    LANGUAGE_CODE = 'zh-hans'
    
    TIME_ZONE = 'Asia/Shanghai'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = False
    复制代码

    (8)创建一个管理员用户

    python manage.py createsuperuser

    现在就可以运行了 

    python manage.py runserver 

    访问后台:http://127.0.0.1:8000/xadmin

     可以看到成功进入

    datetimefield报错问题解决:

    当我们点增加用户信息,会报错

    可以看到报的是xadmin/widgets中第80行

    复制代码
     def render(self, name, value, attrs=None):
            input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('
    ') if ht != '']
            # return input_html
            return mark_safe('<div class="datetime clearfix"><div class="input-group date bootstrap-datepicker"><span class="input-group-addon"><i class="fa fa-calendar"></i></span>%s'
                             '<span class="input-group-btn"><button class="btn btn-default" type="button">%s</button></span></div>'
                             '<div class="input-group time bootstrap-clockpicker"><span class="input-group-addon"><i class="fa fa-clock-o">'
                             '</i></span>%s<span class="input-group-btn"><button class="btn btn-default" type="button">%s</button></span></div></div>' % (input_html[0], _(u'Today'), input_html[1], _(u'Now')))
    复制代码

    上面贴出来的最后一行代码就是widgets.py的第80行代码。

    可以看出这句代码是希望用“ ”把input_html里的两个标签拆开,但两个标签之间没有换行,所以没能拆分,导致报错。

    input_html[1]就是报错的代码,因为input_html里只有一个元素。

     解决办法:

    既然“ ”不能拆分标签,那么就换一种拆分方式,使用“/><”拆分。

    原代码:

    input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('
    ') if ht != '']

    修改后代码:

    input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('/><') if ht != '']
    input_html[0] = input_html[0] + "/>"
    input_html[1] = "<" + input_html[1]

    再运行就正常了

  • 相关阅读:
    docker 实现redis集群搭建
    ArrayList && LinkList
    ServletRequest、 HttpServletRequest、Request的联系与区别
    JSONObject例子
    使用SAXReader对XML进行操作
    JSON与XML的区别比较
    依赖注入(DI)和控制反转(IOC)
    Java 面试题:百度前200页都在这里了
    Java语言规范
    python+pandas+openpyxl下载xls illegalCharacterError
  • 原文地址:https://www.cnblogs.com/gyang/p/14040518.html
Copyright © 2011-2022 走看看