後臺管理設計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了?