入门篇
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
配置
首先创建我们的Django项目xadmin_Usage,创建好目录apps(在apps文件夹里创建两个新的app users和testapp),把在网上下载好的xadmin(网上的可能有问题,可以直接到我的git上clone)拖拽到extra_apps文件夹下。
接下来我们设置settings,首先设置语言等
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
然后将使用的app添加到INSTALLED_APPS中
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'xadmin',
'crispy_forms',
'users',
'testapp',
]
接下来设置数据库,我们使用的是mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "xadminUsage",
'USER': "root",
'PASSWORD': "xxxxxxxx",
'HOST': "127.0.0.1",
"OPTIONS":{"init_command":"SET default_storage_engine=INNODB;"}
}
}
设置基本完成。
现在我们把数据库的表生成一下,把我给到的model代码拷贝到你的项目中。
# _*_ coding: utf-8 _*_
from django.db import models
from django.contrib.auth.models import AbstractUser
from datetime import datetime
class UserProfile(AbstractUser):
name = models.CharField(max_length=30, null=True, blank=True, verbose_name="姓名")
birthday = models.DateField(null=True, blank=True, verbose_name="出生年月")
gender = models.CharField(max_length=6, choices=(("male", u"男"), ("female", "女")), default="female",
verbose_name="性别")
mobile = models.CharField(null=True, blank=True, max_length=11, verbose_name="电话")
email = models.EmailField(max_length=100, null=True, blank=True, verbose_name="邮箱")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name = '用户_管理'
verbose_name_plural = verbose_name
def __str__(self):
return self.username
#------------------------------------------------------------------------------------
# _*_ coding: utf-8 _*_
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200, verbose_name='问题')
pub_date = models.DateTimeField(verbose_name='时间')
def __str__(self):
return self.question_text
class Meta:
verbose_name = '问题_管理'
verbose_name_plural = verbose_name
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200,verbose_name='选择')
votes = models.IntegerField(default=0,verbose_name='投票')
def __str__(self):
return self.choice_text
class Meta:
verbose_name = '选择_管理'
verbose_name_plural = verbose_name
还要在settings中加上(重写用户模型一定要加上这条设置)
AUTH_USER_MODEL = 'users.UserProfile'
接下来在manager.py Task 中使用 makemigrations 和migrate 生成表。
最后配置 url(r'^xadmin/', xadmin.site.urls),
现在xadmin 就基本完成 我们可以manager.py Task 中createsuperuser后访问一下http://127.0.0.1:8000/xadmin/(暂时是空的但可以访问)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
管理类数据
先在每个app目录里新建名为adminx的py文件
如下绑定好类和对应的管理数据类(举例testapp)
# _*_ coding: utf-8 _*_
import xadmin
from .models import Question, Choice
class QuestionAdmin(object):
pass
class ChoiceAdmin(object):
pass
xadmin.site.register(Question, QuestionAdmin)
xadmin.site.register(Choice, ChoiceAdmin)
并在__init__文件中设置default_app_config,例
default_app_config= 'testapp.apps.TestappConfig'
完成这步设置就可以在xadmin的菜单栏看到我们的类了.
单个类的数据管理分为这几个部分。
在刚刚生成的数据管理类里添加如下代码进行对应的单个类管理
class QuestionAdmin(object):
list_display = ['question_text', 'pub_date'] # 添加table显示的列
search_fields = ['question_text'] # 要顶部查询的列
list_filter = ['pub_date'] # 可用顶部过滤器筛选的列
单个类在xadmin左侧菜单栏的名称显示在apps中设置,添加verbose_name
# _*_ coding: utf-8 _*_
from django.apps import AppConfig
class TestappConfig(AppConfig):
name = 'testapp'
verbose_name = 'testapp管理' #左侧菜单栏显示
类中的显示信息名和单条信息名也是通过verbose_name设置,在model中我们已经设置完成,现在显示如图。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
全局管理
# _*_ coding: utf-8 _*_
import xadmin
from xadmin import views
class BaseSetting(object):
# 设置主题
enable_themes = True
use_bootswatch = True
class GlobalSetting(object):
site_title = 'xadminUsage后台管理系统title'
site_footer = 'xadminUsage后台管理系统footer'
menu_style = "accordion" #收起菜单
xadmin.site.register(views.BaseAdminView,BaseSetting)
xadmin.site.register(views.CommAdminView,GlobalSetting)