使用xadmin替换Django自带的admin后台
Django自带有admin后台,可是其风格并不漂亮、功能也不是让人很满意。所以一些大牛就重写了admin后台叫作xadmin,进来的各位应该是对django自带的admin不是很满意,能够参照个人教程来一次替换。python
0 源码获取
项目github地址为https://github.com/sshwsfc/xadmin,其中的xadmin文件夹是源码文件夹。git
若是网速不快,能够访问我提供的连接,直接下载源码和安装依赖环境requirements.txt。https://pan.baidu.com/s/11ks1PsEl13V1H4W2vBd-Bwgithub
1.1 xadmin放置位置
应将xadmin放在项目中与static目录同,放置位置如图所示。
shell
1.2 修改配置文件
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', ]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 国际化设置数据库
LANGUAGE_CODE = 'zh-hans'#更改(xadmin中文) TIME_ZONE = 'Asia/Shanghai'#更改
- 1
- 2
- 3
-
修改路由(主路由处)django
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')), ]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
1.3 别名设置
确保model.py中已经对各个参数设置了别名,这样才能在后台正常显示你所想看到的内容。对属性名进行别名设置只须要在参数位置加上verbose_name=”想要的名字”便可,对类设置别名则须要定义一个子类。ruby
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
1.4 增长配置文件
-
在每一个APP目录下新建一个adminx.py文件,这里以订单order为例。bash
model内容以下:markdown
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 建立adminx.pysession
必须叫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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 增长apps.py内容
from django.apps import AppConfig class DfOrderConfig(AppConfig): name = 'df_order' verbose_name = "订单"
- 1
- 2
- 3
- 4
- 5
- 增长_ _ init _ _.py内容
default_app_config='df_order.apps.DfOrderConfig'
- 1
同理,对其余APP模块进行相同操做。
1.5 数据库表
若是前面对model进行了修改,应该将数据库移除,重新建表。
(venv) root@coding:/opt/duke/b2c-shop# python manage.py makemigrations (venv) root@coding:/opt/duke/b2c-shop# python manage.py migrate
- 1
- 2
- 3
xadmin页面展现