xadmin是对Django自带框架admin的优化,可以使得后台界面布局合理,美观。
一.Xadmin引入Django工程中
1.xadmin下载地址https://github.com/sshwsfc/xadmin
2.进入后下载Django版本对应的分支,下载后解压,将里边的xadmin文件夹拷贝到Django项目下新建的extra_apps包下
3.extra_apps右键-找到Mark Directory As-选择Sources Root,将设置为SourcesRoot
4.pip安装xadmin需要的库,需要的库都在解压的文件里requirements.txt有列出
- django-crispy-forms>=1.6.0
- django-import-export>=0.5.1
- django-reversion>=2.0.0
- django-formtools==1.0
- future==0.15.2
- httplib2==0.9.2
- six==1.10.0
5.settings.py注册xadmin和crispy_forms两个app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'hello',
'xadmin',#xamin新增
'crispy_forms',#xamin新增
]
setttings.py中
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#新增以下两行
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))
6.urls.py中新增到xadmin的路由
url(r'^xadmin/',xadmin.site.urls),
7.执行数据库同步操作
python manage.py makemigrations
python manage.py migrate
8.运行服务器,访问http://127.0.0.1:8000/xadmin/
xadmin使用登录账户可以使用以前admin时创建的账户
二 xadmin使用
xadmin的使用基本上与admin的使用没有区别,
步骤都是1.在models中定义数据模型2.定义视图函数3.urls.py中绑定视图函数访问规则,只是编写位置发生了部分变化
1.在extra_apps下的xadmin中找到models.py,新增student,models.py中已有代码不用管
class Student(models.Model):
'''学生成绩表'''
student_id = models.CharField(max_length=30, verbose_name="学号")
name = models.CharField(max_length=30, verbose_name="姓名")
age = models.IntegerField(verbose_name="年龄")
score = models.IntegerField(verbose_name="分数")
gender_choices = (("M", "男"), ("F", "女"))#性别做成下拉选择框样式
gender = models.CharField(max_length=10,
choices=gender_choices, # 设置性别选项
verbose_name="性别",
default="")
class Meta:
verbose_name = "学生成绩"
verbose_name_plural = verbose_name
2.adminx.py中注册student
import xadmin#导入xadmin
from .models import Student
class ControlStudent(object):#继承自object
# 显示的字段
list_display = ('student_id', 'name', 'age', 'score')
# 搜索条件
search_fields = ('name',)
# 每页显示10条
list_per_page = 10
# 注册Student表
xadmin.site.register(Student, ControlStudent)
3.执行数据库同步操作
E:\Django_project\helloword>python3 manage.py makemigrations
Migrations for 'hello':
hello\migrations\0011_auto_20191213_1047.py
- Alter field auth on book
Migrations for 'xadmin':
extra_apps\xadmin\migrations\0004_student.py
- Create model Student
E:\Django_project\helloword>python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, hello, sessions, xadmin
Running migrations:
Applying hello.0011_auto_20191213_1047... OK
Applying xadmin.0004_student... OK
4.访问xadmin可以看到有新增student表
如果一个字段设置了choices属性,在模版中如果我要显示这个字段,比如用户的性别,只需设置2个参数选项。
在django模版系统就会将它默认解析为一个下拉菜单,这样对于一个静态的下拉菜单式很方便的。
**gender_choices参数定义一个元祖类型,里面有2个参数,一个是value值可以选择,如“M”,另外一个是显示的内容display_name,如“男”
gender字段中保存了两个信息,一个为value,一个display_name,取value时直接用st.gender即可,如果要取display_name用st.get_gender_display()这个函数即可