zoukankan      html  css  js  c++  java
  • django安装使用xadmin

    Xadmin介绍

    直接替换掉Django自带的admin系统,并提供了很多有用的东西;完全的可扩展的插件支持,基于Twitter Bootstrap的漂亮UI。

    • 完全替代Django admin
    • 支持基于Twitter Bootstrap的UI主题
    • 支持可扩展的插件
    • 更好的过滤器,日期范围,数量范围等
    • 内置xls,csv,xml和json格式数据导出
    • 仪表板页面和小部件支持 (暂时用不到)
    • 现场书签
    • 完整的CURD方法(增删改查)

    Xadmin安装

    xadmin下载: https://github.com/sshwsfc/xadmin/tree/django2(记得要直接下载zip)

    源码集成:github下载源码(一定要下载django2的文件名为:xadmin-django2.zip,解压后里面有个xadmin就是我们需要的xadmin源码了)

    项目的根目录创建一个文件夹为:extra_apps,将下载的好xadmin源码拷贝到extra_apps目录中如下:

    通过pycharm 选中extra_apps文件夹点击鼠标右键选中菜单mark directory as 选择 sources root就可以变成上面的蓝色文件夹目录就可以了。

     安装依赖项:

    #pip install git+git://github.com/sshwsfc/xadmin.git@django2
    
    依赖项:
    django-crispy-forms
    django-import-export
    django-reversion
    django-formtools
    future
    httplib2
    six

    Xadmin配置

     settings.py配置

    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.insert(0,os.path.join(BASE_DIR,'extra_apps'))
    sys.path.insert(0,os.path.join(BASE_DIR,'polls'))
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
      ……
    'polls', #应用app
    'xadmin', 'crispy_forms', 'reversion', ]

    urls.py配置

    from django.contrib import admin
    from django.urls import include, path
    import xadmin
    
    urlpatterns = [
        path('polls/', include('polls.urls')),
        path('admin/', admin.site.urls),
    path('xadmin/',xadmin.site.urls),
    ]

    setting.py设置成中文

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

    bug修改

    TypeError at /xadmin/xadmin/userwidget/add/ render() got an unexpected keyword argument 'renderer'错误
    
    修改项目中xadmin/views/dashborad.py中的render(),在render()中添加参数:renderer=None,即可解决。

     

    运行项目

       先执行python manage.py makemigrations 然后执行python manage.py migrate 生成数据库

       执行 python manage.py runserver (如果缺少库的话自行安装相应的库就可以了),

       当访问后台的时候可以看到如下效果说明成功了

     中文板式:

    创建管理员

    python manage.py createsuperuser
    

    Django admin修改用户密码

    python manage.py shell  
    
    from django.contrib.auth.models import User #引入管理员密码存放的数据库
    
    user=User.objects.filter() #查找该数据库里有哪些用户
    
    user 
    
    输出user 可以看到用户名,我这里只有一个admin
    
    [<User: admin>]     
    
    重置密码,
    
    user = User.objects.get(username='admin') #获取名称为admin的用户
    
    user.set_password('123456') #设置密码
    
    user.save()  # 保存user对象

    Django admin修改注册表信息

    xadmin后台如果要对表的内容增删改查,跟之前的admin.py文件里面写注册表信息一样,需在admin.py同一级目录新建一个adminx.py的文件。
    然后在adminx.py文件控制页面上需显示的内容。

    Models模块

    from django.utils import timezone
    import datetime
    
    
    class Question(models.Model):
        question_text = models.CharField(max_length=200)
        pub_date = models.DateTimeField('date published')
    
        def __str__(self):
            return self.question_text
    
        def was_published_recently(self):
            now = timezone.now()
            return now - datetime.timedelta(days=1) <= self.pub_date <= now
    
    
    class Choice(models.Model):
        question = models.ForeignKey(Question,on_delete=models.CASCADE)
        choice_text = models.CharField(max_length=200)
        votes = models.IntegerField(default=0)
    
        def __str__(self):
            return self.choice_text

    adminx.py文件

    在admin.py文件的同一目录新建一个adminx.py(注意只能是adminx.py,不能叫其它的名称)
    在adminx.py里与之前的admin.py代码有一些不一样

    • 之前import admin, 这里import xadmin
    • 之前注册表时继承admin.ModelAdmin, 这里继承object
    • 之前inlines 关联的表(class MoreInfo)继承admin.StackedInline, 这里继承object
    • 之前可以有2种注册方式,可以用装饰器方法@admin.register(表类名),这里只能通过xadmin.site.register(表类名, xxx)方式
    import xadmin
    from .models import Question, Choice
    
    
    class MoreInfo(object):
        model = Choice
    
    
    class ControlQuestion(object):
        # 显示的字段
        list_display = ('question_text', 'pub_date')
        # 搜索条件
        search_fields = ('question_text',)
    
        # 每页显示10条
        list_per_page = 10
    
        # 在Question页面显示更多信息Choice
        inlines = [MoreInfo]
    
    
    class ControlChoice(object):
        list_display = ["question", "choice_text"]
    
    
    # 注册Question表
    xadmin.site.register(Question, ControlQuestion)
    xadmin.site.register(Choice, ControlChoice)

    xadmin列表页显示

  • 相关阅读:
    Putting Apache Kafka To Use: A Practical Guide to Building a Stream Data Platform-part 2
    Putting Apache Kafka To Use: A Practical Guide to Building a Stream Data Platform-part 1
    Apache Kafka之设计
    分布式内存文件系统Tachyon
    Tachyon:Spark生态系统中的分布式内存文件系统
    Python垃圾回收机制
    一行 Python 实现并行化 -- 日常多线程操作的新思路
    Hive SQL的编译过程
    vim调整粘贴时的文本缩进
    linux img文件 分区挂载
  • 原文地址:https://www.cnblogs.com/xiao-apple36/p/11442941.html
Copyright © 2011-2022 走看看