1、上传图片/文件等资源

有时候需要添加一些附件,例如,新生刚入学,大家相互之间还不熟悉,希望能通过照片来加深印象,并且方便教学管理。

首先,对demo/urls.py文件进行改造,给urlpatterns添加static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT):

urlpatterns = [path(r'', xadmin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

然后在demo/settings.py文件中添加

# 指定上传位置
LOCATION = os.path.join('/', 'Users', 'babybus')
# 媒体文件根目录
MEDIA_ROOT = os.path.join(LOCATION, 'Media')ROOT_URL = '/'MEDIA_URL = '/media/'

上传图片涉及到路径的获取,在models.py文件中导入os模块

import os

在models.py文件的Students类中添加一个路径获取的方法及models.ImageField字段:

def get_photo(self, filename):return os.path.join('photo', '%s_%s_%s_%s' % (self.class_name, self.name, self.id, os.path.splitext(filename)[1]))
photo = models.ImageField(verbose_name='照片', upload_to=get_photo, blank=True, null=True)

同时同步一下数据库操作,这样页面就多出一个照片上传的选项了,选择好照片并保存:

2、筛选、过滤、排序

1)筛选

今年学校的录取率爆满,生源特别好,要在一个数据库中找到对应的学生,必然需要用到搜索功能。

修改adminx.py文件,在StudentsAdmin类中添加:

search_fields = ('name', )

要是我们想通过班级或者学科来查找这个班级或者选修这门学科的所有学生,方法还会是一样的吗?我们先试试:

search_fields = ('name', 'class_name', 'subjects',)

结果,报错了:

这是怎么回事呢?原来,我们搜的“班级”和“学科”这两个字段一个是外键一个是含有多对多关系,Student模型中的这两个字段名称并不是其实际名称,要在字段后加“__”两个下划线,然后再添加外键或多对多关系实际的字段名:

search_fields = ('name', 'class_name__class_name', 'subjects__name',)

现在妥妥的了。

2)过滤:

如果只想查看学生表中的男生或者女生的信息,那就用到了过滤功能:

修改adminx.py文件,在StudentsAdmin类中添加:

list_filter = ('sex',)

3)排序:

如果想让学生按某字段的顺序来排序,同样我们需要在adminx.py文件中的StudentsAdmin类中添加ordering选项:

# 顺序排序
ordering = ('age', 'name', )

# 逆序排序,在前面加一个减号"-",例如按年龄倒序排列

ordering = ('-age',)

这表示同时按照年龄和姓名字段来排序。

二、定制网站信息

我们希望登录网站的时候,显示站点的名称,修改adminx.py文件,添加LoginViewAdmin类,并注册:

from xadmin.views.website import LoginViewclass LoginViewAdmin(LoginView):title = '学生信息管理系统'xadmin.site.register(LoginView, LoginViewAdmin)

还可以继续修改,例如浏览器标题和左上角的网页标题以及页脚的版权信息:

from xadmin.views import CommAdminView
class GlobalSetting(CommAdminView):# 左上角及浏览器标题site_title = '学生信息管理系统'# 页脚版权信息site_footer = 'Copyright © 2018 宝宝巴士'xadmin.site.register(CommAdminView, GlobalSetting)

具体源码内容  请关注学长公众号回复“Django”

公众号二维码                 

左侧边栏如果以后项目越来越多了,有一个归类会更好看些,也方便管理操作。这就需要在GlobalSetting类中添加

menu_style = 'accordion'

Python3.6+Django2.0+Xadmin2.0学生信息管理系统-2相关推荐

  1. python3.6 django教程_【Python3.6+Django2.0+Xadmin2.0系列教程一】环境搭建及项目创建

    由于工作需要,接触了大半年时间的Django+xadmin框架,一直没空对这块对进行相关的梳理.最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧. 好了,话不多说,下面开始进入正题: 环境需求: ...

  2. 赶紧进来看看---C语言实现学生信息管理系统(3.0文件存储版)

    本文主要介绍了将学生信息管理系统改造为文件存储版本- 主要涉及文件操作函数–将学生信息导入文件和从文件读取学生信息到程序中,从而达到数据持久化的效果 文章最后有源码展示 学生信息管理系统1.0静态版- ...

  3. Python基础实战项目——学生信息管理系统(内涵完整项目代码)

    写在前面,hello,各位朋友大家好.最近一直因为各种事情没有怎末写python,有点手生,刚好朋友大作业需要一个用python写的学员信息管理系统(非常简单的),就写一个简单的与大家共同探讨,有问题 ...

  4. 【Python3.6+Django2.0+Xadmin2.0系列教程之一(入门篇-上)】环境搭建及项目创建

    由于工作需要,接触了大半年时间的Django+xadmin框架,一直没空对这块对进行相关的梳理.最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧. 好了,话不多说,下面开始进入正题: 转载请注明 ...

  5. C# 学生信息管理系统 2.0

    资源下载请点击 经历几天的探索,对原有的系统做了重大的修改. 修改如下: 1.登录界面进行了修改,增加了管理员选项. 2.学生界面增加了课表查询,成绩查询和选课系统,学生信息功能,界面做了优化,可以显 ...

  6. 学生信息管理系统(面向对象版本)V3.0

    版本 面向对象版本的学生信息管理系统 第一版: import os# 面向对象的方式分析学生管理管理系统# 1. 添加学生的功能 # 2. 修改学生的功能 # 3. 删除学生的功能 # 4. 查询学生 ...

  7. 学生信息管理系统V1.0

    需求: 将学生信息存储起来并能进行相关的增删改查 思路: 将学生信息存放在字典中,然后在将所有学生信息存放到列表中,通过对列表进行操作来达到对学生信息的增删改查等操作 说明: 此版本只是一个简单的列表 ...

  8. 学生信息管理系统V2.0

    需求 将学生信息存储起来(数据能多次使用)并能进行相关的增删改查 思路 将学生信息存放在字典中,然后在将所有学生信息存放到文件中,通过对文件进行操作来达到对学生信息的增删改查等操作 说明 这个版本只是 ...

  9. 赶紧进来看看--用C语言实现学生信息管理系统(1.0静态版)

    本文介绍了用C语言实现学生信息管理系统设计,主要包括对学生信息增删查改.分类统计.排序等功能,文章最后有全部源码展示- C语言实现学生信息管理系统--1.0静态版 一.学生信息管理系统介绍 二.实现学 ...

最新文章

  1. 月薪没到30K的程序员必须要背的面试八股文,我先啃为敬。。。
  2. python神经网络训练效果差_Python与人工神经网络(11)——为什么深度神经网络很难训练...
  3. Nature:2020年10大科学发现
  4. 在AI Studio上部署外部可以直接调用的云端服务
  5. java存款程序_JAVA实现账户取款和存款操作
  6. 自学python推荐书籍同时找哪些来实践-想学习Python爬虫,但是找不到电子书或者不知道找什么资料...
  7. 网站搭建 (第09天) 博客统计排行
  8. excel中如何取消自动超链接?
  9. eventfd以及epoll原理分析
  10. 《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一1.3 建立自动化策略...
  11. Python学习 Day 2-数据类型和变量
  12. Linux守护进程的编程实现
  13. 同花顺 python量化交易_开启量化第一步!同花顺iFinD数据接口免费版简易操作教程...
  14. LRC软件测试自学,LRC滚动歌词制作编辑器
  15. 教你15道广东糖水甜品
  16. E哥的Git教程(一)
  17. iphone计算机的声音怎么办,苹果计算机安装win10系统的扬声器无声音该怎么解决...
  18. 服务器运维的工作内容及职责
  19. 纯真ip数据库 转mysql_如何把纯真ip数据库导入到MySQL数据表中
  20. kcp 介绍与源代码分析_kcp介绍

热门文章

  1. vue 解决: *!!vue-style-loader!css-loader?{“sourceMap“:true}!../../../../vue-loader
  2. 图解 IDEA 中 springboot 项目 MyBatis Generator 逆向生成实体类及 mapper 配置文件
  3. vue : 引入、安装 jquery 、bootstrap
  4. git 查看远程仓库地址
  5. BZOJ.3052.[WC2013]糖果公园(树上莫队 带修改莫队)
  6. 阿里云Https部署网站
  7. jquery的$.extend、$.fn.extend、 jQuery.extend( target, object1, [objectN])作用及区别
  8. WebService的基本概念:java webservice,什么是webservice
  9. 技术规划应该写成什么样?
  10. 19.C++-(=)赋值操作符、初步编写智能指针