后台管理设计xadmin
前言
可能有人会问为什么要用xadmin,不使用django自带的admin后台管理系统。这里小编想说,xadmin和admin都是关于Django的后台管理系统,至于选择哪一款作为后台,看每个人的使用习惯。
代码已上传至github:https://github.com/kalipoison/fresh-market
此项目仅学习用途
要求
Package Version
Django 1.11.3
django-crispy-forms 1.6.1
django-filter 1.0.4
django-formtools 2.0
django-reversion 2.0.9
djangorestframework 3.6.3
future 0.16.0
httplib2 0.9.2
Markdown 2.6.8
mysqlclient 1.3.10
olefile 0.46
Pillow 4.2.1
pip 20.0.2
pytz 2019.3
setuptools 46.1.3
six 1.10.0
wheel 0.34.2
XlsxWriter 0.9.8
xlwt 1.2.0
代码已上传至github:https://github.com/kalipoison/fresh-market
此项目仅学习用途
流程
将xadmin文件夹(请使用我的文件夹下的xadmin,github上的xadmin对于python3.6有点不太友好)复制到extra_apps目录下
goods商品模块后台管理设计
adminx.py
#!/usr/bin/env python
# encoding: utf-8
import xadmin
from .models import Goods, GoodsCategory, GoodsImage, GoodsCategoryBrand, Banner, HotSearchWords
from .models import IndexAd
class GoodsAdmin(object):
list_display = ["name", "click_num", "sold_num", "fav_num", "goods_num", "market_price",
"shop_price", "goods_brief", "goods_desc", "is_new", "is_hot", "add_time"]
search_fields = ['name', ]
list_editable = ["is_hot", ]
list_filter = ["name", "click_num", "sold_num", "fav_num", "goods_num", "market_price",
"shop_price", "is_new", "is_hot", "add_time", "category__name"]
style_fields = {"goods_desc": "ueditor"}
class GoodsImagesInline(object):
model = GoodsImage
exclude = ["add_time"]
extra = 1
style = 'tab'
inlines = [GoodsImagesInline]
class GoodsCategoryAdmin(object):
list_display = ["name", "category_type", "parent_category", "add_time"]
list_filter = ["category_type", "parent_category", "name"]
search_fields = ['name', ]
class GoodsBrandAdmin(object):
list_display = ["category", "image", "name", "desc"]
def get_context(self):
context = super(GoodsBrandAdmin, self).get_context()
if 'form' in context:
context['form'].fields['category'].queryset = GoodsCategory.objects.filter(category_type=1)
return context
class BannerGoodsAdmin(object):
list_display = ["goods", "image", "index"]
class HotSearchAdmin(object):
list_display = ["keywords", "index", "add_time"]
class IndexAdAdmin(object):
list_display = ["category", "goods"]
xadmin.site.register(Goods, GoodsAdmin)
xadmin.site.register(GoodsCategory, GoodsCategoryAdmin)
xadmin.site.register(Banner, BannerGoodsAdmin)
xadmin.site.register(GoodsCategoryBrand, GoodsBrandAdmin)
xadmin.site.register(HotSearchWords, HotSearchAdmin)
xadmin.site.register(IndexAd, IndexAdAdmin)
apps.py
from django.apps import AppConfig
class GoodsConfig(AppConfig):
name = 'goods'
verbose_name = "商品"
trade交易模块后台管理设计
adminx.py
#!/usr/bin/env python
# encoding: utf-8
import xadmin
from .models import ShoppingCart, OrderInfo, OrderGoods
class ShoppingCartAdmin(object):
list_display = ["user", "goods", "nums", ]
class OrderInfoAdmin(object):
list_display = ["user", "order_sn", "trade_no", "pay_status", "post_script", "order_mount",
"order_mount", "pay_time", "add_time"]
class OrderGoodsInline(object):
model = OrderGoods
exclude = ['add_time', ]
extra = 1
style = 'tab'
inlines = [OrderGoodsInline, ]
xadmin.site.register(ShoppingCart, ShoppingCartAdmin)
xadmin.site.register(OrderInfo, OrderInfoAdmin)
apps.py
from django.apps import AppConfig
class TradeConfig(AppConfig):
name = 'trade'
verbose_name = "交易管理"
user_operation用户操作模块后台管理设计
adminx.py
#!/usr/bin/env python
# encoding: utf-8
import xadmin
from .models import UserFav, UserLeavingMessage, UserAddress
class UserFavAdmin(object):
list_display = ['user', 'goods', "add_time"]
class UserLeavingMessageAdmin(object):
list_display = ['user', 'message_type', "message", "add_time"]
class UserAddressAdmin(object):
list_display = ["signer_name", "signer_mobile", "district", "address"]
xadmin.site.register(UserFav, UserFavAdmin)
xadmin.site.register(UserAddress, UserAddressAdmin)
xadmin.site.register(UserLeavingMessage, UserLeavingMessageAdmin)
apps.py
from django.apps import AppConfig
class UserOperationConfig(AppConfig):
name = 'user_operation'
verbose_name = "用户操作管理"
user用户模块后台管理设计
adminx.py
#!/usr/bin/env python
# encoding: utf-8
import xadmin
from xadmin import views
from .models import VerifyCode
class BaseSetting(object):
enable_themes = True
use_bootswatch = True
class GlobalSettings(object):
site_title = "GOHB生鲜后台"
site_footer = "mxshop"
# menu_style = "accordion"
class VerifyCodeAdmin(object):
list_display = ['code', 'mobile', "add_time"]
xadmin.site.register(VerifyCode, VerifyCodeAdmin)
xadmin.site.register(views.BaseAdminView, BaseSetting)
xadmin.site.register(views.CommAdminView, GlobalSettings)
apps.py
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
verbose_name = "用户管理"
项目设置配置
修改settings.py
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'users.apps.UsersConfig',
'DjangoUeditor',
'goods',
'trade',
'user_operation',
'xadmin',
'crispy_forms',
]
在终端输入
# 因为要添加管理的表结构,所以要再做一次数据库迁移
python manage.py makemigrations
python manage.py migrate
# 注册后台管理员账户
python manage.py createsuperuser
修改settings.py
settings.py
#设置时区
LANGUAGE_CODE = 'zh-hans' #中文支持,django1.8以后支持;1.8以前是zh-cn
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False #默认是Ture,时间是utc时间,由于我们要用本地时间,所用手动修改为false!!!!
修改Mxshop下url.py
url.py
from django.conf.urls import url
# from django.contrib import admin
import xadmin
urlpatterns = [
url(r'^xadmin/', xadmin.site.urls),
]
在浏览器输入127.0.0.1:8000
这样后台管理系统就完成了,是不是有点喜欢上django了?