查看: 19|回复: 0

[建站笔记] 使用xadmin替换Django自带的admin后台

[复制链接]
发表于 2019-5-6 10:10:43 | 显示全部楼层 |阅读模式
使用xadmin替换Django自带的admin后台
Django自带有admin后台,但是其风格并不漂亮、功能也不是让人很满意。因此一些大牛就重写了admin后台叫做xadmin,进来的各位应该是对django自带的admin不是很满意,可以参照我的教程来一次替换。
注意django版本不可使用django 2.1及以上
源码获取
项目github地址为https://github.com/sshwsfc/xadmin,其中的xadmin文件夹是源码文件夹。
如果网速不快,可以访问我提供的链接,直接下载源码和安装依赖环境requirements.txt。https://pan.baidu.com/s/11ks1PsEl13V1H4W2vBd-Bw
xadmin放置位置
应将xadmin放在项目中与static目录同,放置位置如图所示。
修改配置文件
NSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'xadmin',#添加
    'crispy_forms',#添加
    'reversion',#添加(可选)
    'df_user',
    'df_goods',
    'tinymce',
    'df_cart',
    'df_order',
    'haystack',
]
1234567891011121314151617
国际化设置
  LANGUAGE_CODE = 'zh-hans'#更改(xadmin中文)
  TIME_ZONE = 'Asia/Shanghai'#更改
12
修改路由(主路由处)
from django.conf.urls import url,include
      
       # from django.contrib import admin 注释admin
           #以下四句为新添加内容
           
           import xadmin
           xadmin.autodiscover()
           
           from xadmin.plugins import xversion
           xversion.register_models()
           
           
           urlpatterns = [
             # url(r'^admin/', admin.site.urls),注释原路由
             url(r'^xadmin/',include(xadmin.site.urls)),#添加新路由
             url(r'^user/', include('df_user.urls',namespace='user')),
             url(r'^', include('df_goods.urls',namespace='goods')),
             url(r'^cart/',include('df_cart.urls')),
             url(r'^order/',include('df_order.urls')),
           ]
123456789101112131415161718192021
别名设置
确保model.py中已经对各个参数设置了别名,这样才能在后台正常显示你所想看到的内容。对属性名进行别名设置只需要在参数位置加上verbose_name=”想要的名字”即可,对类设置别名则需要定义一个子类。
class TypeInfo(models.Model):
    ttitle = models.CharField(max_length=20,verbose_name="类别")
    isDelete = models.BooleanField(default=False)
    def __str__(self):
        return self.ttitle
    class Meta:
        verbose_name = '商品类别'
        verbose_name_plural = verbose_name
12345678
增加配置文件
在每个APP目录下新建一个adminx.py文件,这里以订单order为例。
model内容如下:
from django.db import models
# Create your models here.
class Order(models.Model):
    oid = models.CharField(max_length=20,primary_key=True,verbose_name="订单号")#订单号
    user = models.ForeignKey('df_user.User')
    odate = models.DateTimeField(auto_now=True,verbose_name="提交时间")#订单提交时间
    oisPay = models.BooleanField(default=False,verbose_name="是否支付")
    ototal = models.DecimalField(max_digits=6,decimal_places=2,verbose_name="总金额")#小数为2位,一共6位
    oadress = models.CharField(max_length=150,verbose_name="地址")
    class Meta:
        verbose_name = '订单'
        verbose_name_plural = verbose_name
class OrderDetail(models.Model):
    goods = models.ForeignKey('df_goods.GoodInfo')
    order = models.ForeignKey(Order)
    price = models.DecimalField(max_digits=5,decimal_places=2,verbose_name="价格")
    count = models.IntegerField(verbose_name="数量")
    class Meta:
        verbose_name = '订单详情'
        verbose_name_plural = verbose_name
1234567891011121314151617181920212223
创建adminx.py
必须叫adminx.py
import xadmin
  from .models import Order,OrderDetail
  class OrderAdmin(object):
      list_display = ['oid','user' ,'odate','oisPay','ototal',
      'oadress']
      search_fields = ['oid', ]
      list_editable = ['oid','user' ,'oisPay','ototal','oadress' ]
      list_filter = ['oid','user' ,'odate','oisPay','ototal','oadress']
  class OrderDetailAdmin(object):
      list_display = ['goods', 'price', 'count', ]
      list_editable = ['goods', 'price', 'count',]
      list_filter = ['goods']
  xadmin.site.register(Order,OrderAdmin)
  xadmin.site.register(OrderDetail,OrderDetailAdmin)
123456789101112131415
增加apps.py内容
from django.apps import AppConfig
  class DfOrderConfig(AppConfig):
      name = 'df_order'
      verbose_name = "订单"
1234
增加_ _ init _ _.py内容
default_app_config='df_order.apps.DfOrderConfig'
1
数据库表
如果前面对model进行了修改,应该将数据库移除,从新建表。
(venv) root@coding:/opt/duke/b2c-shop# python manage.py makemigrations
(venv) root@coding:/opt/duke/b2c-shop# python manage.py migrate
123
xadmin页面展示
站点Model管理
xadmin可以使用的页面样式控制基本与Django原生的admin一直。

list_display 控制列表展示的字段
search_fields 控制可以通过搜索框搜索的字段名称,xadmin使用的是模糊查询
list_filter 可以进行过滤操作的列
ordering 默认排序的字段
readonly_fields 在编辑页面的只读字段
exclude 在编辑页面隐藏的字段
list_editable 在列表页可以快速直接编辑的字段
show_detail_fileds 在列表页提供快速显示详情信息
refresh_times 指定列表页的定时刷新
list_export 控制列表页导出数据的可选格式
data_charts *控制显示图标的样式
model_icon 控制菜单的图标

model_icon
class SKUAdmin(object):
     model_icon = 'fa fa-gift'
xadmin.site.register(models.SKU, SKUAdmin)
1234
可选的图标样式参考http://fontawesome.dashgame.com/
list_display
list_display = ['id', 'name', 'price', 'stock', 'sales', 'comments']
1
search_fields
search_fields = ['id','name']
1
list_filter
list_filter = ['category']
1
list_editable
list_editable = ['price', 'stock']
1
show_detail_fields
show_detail_fields = ['name']
1
list_export
list_export = ['xls', 'csv', 'xml']
1
refresh_times
lass OrderAdmin(object):
   list_display = ['order_id', 'create_time', 'total_amount', 'pay_method', 'status']
   refresh_times = [3, 5]  # 可选以支持按多长时间(秒)刷新页面
123
            
      
---------------------
作者:abc_soul
来源:CSDN
原文:https://blog.csdn.net/abc_soul/article/details/88578731
版权声明:本文为博主原创文章,转载请附上博文链接!
版权申明:此文如未标注转载均为本站原创,自由转载请注明 本贴地址:http://www.xbadmin.cn/thread-1997-1-1.html 上篇帖子: 桥梁工程 - 冲击钻孔专项施工方案 下篇帖子: 怎么找到很久以前的微信消息记录
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小白站长云与小白站长论坛两站强强合作,凡是小白站长论坛的正式会员注册小白站长云并需要购买云服务器或者服务器租用/托管、云防御、ssl证书的可联系管理员享受升级成小白站长云金牌会员,永久享受8折优惠。还等什么,小白站长论坛的用户们赶快行动起来吧。

云服务器赞助商|sitemap|手机版|小黑屋|小白站长论坛

GMT+8, 2019-5-24 15:57 , Processed in 0.050973 second(s), 26 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表