Python3.6+Django2.0+Xadmin2.0學生信息管理系統-2

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'

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456811.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456811.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456811.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vim自帶的練習教程(vimtutor)

聲明:本文源于Centos 7.2系統vim自帶的練習教程--vimtutor歡迎閱 讀《 V I M 教 程 》 - 版本 1.7 Vim 是一個具有很多命令的功能非常強大的編輯器。限于篇幅,在本教程當中就不詳細介紹了。本教程的設計目標是講述一些必要的基本命令,而掌握…

pycharm之no python interpreter configured for project的解決辦法

今天由于重裝了系統,所以必須得重新配置一些軟件,在打開pycharm運行程序時顯示“no python interpreter configured for project”提示。根據字面意思是“python沒有解釋器”。 解決辦法: 找到你之前下載python環境支持庫如下圖所示&#x…

Python是非常優美的語言,那到底如何個美呢?

我把Python里面非常有名的簡潔,高效,方便的代碼整理出來,讓我們來一睹她的風采。其實每個主題展開講都是很大的篇幅,今天我們先overview一下 看完之后,相信初學者會更快的喜歡上python. 1.列表推導 要說Python里面最…

js生成驗證碼并且驗證

<html> <head> <title>驗證碼</title> <style type"text/css"> #code { font-family:Arial; font-style:italic; font-weight:bold; border:0; letter-spacing:2px; color:blue; } </style> <script type &qu…

大數據集群搭建之hadoop、tomcat、jdk等工具的安裝(三)

目錄一、準備的資源&#xff1a;二、安裝配置過程 目錄 本章就說下各種軟件的安裝和配置。 一、準備的資源&#xff1a; 1、tomcat(如用于在網頁上查看HDFS的存儲等) 地址&#xff1a;http://pan.baidu.com/s/1miC93ny 密碼&#xff1a;52dd 2、jdk 地址&#xff1a;ht…

pycharm 快捷鍵大全

1、編輯&#xff08;Editing&#xff09; Ctrl Space 基本的代碼完成&#xff08;類、方法、屬性&#xff09; Ctrl Alt Space 快速導入任意類 Ctrl Shift Enter 語句完成 Ctrl P 參數信息&#xff08;在方法中調用參數&#xff09; Ctrl Q 快速查看文檔 F1 Web幫…

轉載 Spark性能優化指南——基礎篇

前言 在大數據計算領域&#xff0c;Spark已經成為了越來越流行、越來越受歡迎的計算平臺之一。Spark的功能涵蓋了大數據領域的離線批處理、SQL類處理、流式/實時計算、機器學習、圖計算等各種不同類型的計算操作&#xff0c;應用范圍與前景非常廣泛。在美團?大眾點評&#xff…

JavaScript 判斷變量是否為數組Array的方法

1. 不能用typeof &#xff0c;因為typeof 只能判斷基本類型&#xff0c;不能判斷引用類型 var ary [1,23,4];console.log(typeof ary); //輸出結果是Object上面的辦法并不能實時的檢測出是否是數組&#xff0c;只能判斷其類型&#xff0c;所以說typeof判斷基本類型數據還是挺好…

require.js用法簡介

一、為什么要用require.js&#xff1f; 最早的時候&#xff0c;所有Javascript代碼都寫在一個文件里面&#xff0c;只要加載這一個文件就夠了。后來&#xff0c;代碼越來越多&#xff0c;一個文件不夠了&#xff0c;必須分成多個文件&#xff0c;依次加載。下面的網頁代碼&…

Pycharm新建文件時自動添加基礎信息

# -*- coding: utf-8 -*- # Time : ${DATE} ${TIME} # Author : Liu # File : ${NAME}.py 如下圖所示 再建一個py文件時就會自動添加信息&#xff1a; # -*- coding: utf-8 -*- # Time : 2019/05/05 11:46 # Author : Liu # File : DOUBAN.py

JTLParser-linux上jmeter的jtl文件二次分析

解析JMeter的JTL文件 2013年01月30日 ? 綜合 ? 共 1452字 ? 字號 小 中 大 ? 評論關閉http://code.google.com/p/xtoolkit/wiki/JTLParser Introduction 當把JMeter使用命令行運行后&#xff0c;JMeter會把結果保存到一個指定文件中&#xff08;使用 -l 參數指定&#xff0…

php過濾html標簽截取部分內容

<?php$str <span>fdsfsdf</span><a href"#">href</a>; echo htmlspecialchars($str).<Br>; echo strip_tags($str);?>用strip_tags能把Html標簽都去掉&#xff0c;然后調用truncate函數 $array[$row[content_id]][content_ti…

解決python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX

從網上抓了一些字節流&#xff0c;想打印出來結果發生了一下錯誤&#xff1a; UnicodeEncodeError: gbk codec cant encode character \xbb in position 8530: illegal multibyte sequence 代碼 import urllib.request resurllib.request.urlopen(http://www.baidu.com) ht…

Linux中的crontab詳解

linux系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作&#xff0c;因此這個系統服務是默認啟動的。另外, 由于使用者自己也可以設置計劃任務&#xff0c;所以&#xff0c; Linux 系統也提供了使用者控制計劃任務的命令 :crontab 命令…

centos7如何安裝cloud-init

cloud-init rpm包下載地址&#xff1a;https://pkgs.org/download/cloud-init http://www.rpmfind.net/linux/RPM/index.html 轉載于:https://www.cnblogs.com/double12gzh/p/10166131.html

實現一個簡單的前端水印

需求分析 水印效果如下&#xff1a; 除了直觀需求&#xff0c;還有非直觀需求。 這是個背景圖。文字樣式以及文字本身可調整。對于需求1&#xff0c;需要前端生成圖片的能力。 該能力的原理&#xff1a;借用canvas.toDataURL()或者(new XMLSerializer()).serializeToString()生…

QQ客服聊天功能網頁跳轉只需要幾行代碼

<html><head><meta charset"utf-8"></head><body><a target"_blank" href"http://wpa.qq.com/msgrd?v3&uin客服QQ號&siteqq&menuyes"><img border"0" src"http://wpa.qq.co…

HDU 2234 IDA*

無題I Time Limit: 10000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1648 Accepted Submission(s): 640 Problem Description一天機器人小A在玩一個簡單的智力游戲&#xff0c;這個游戲是這樣的&#xff0c;在一個4*4的矩陣…

Linux環境下Mysql的安裝教程及安裝過程常見問題的解決方法

最近安裝mysql時看到一篇不錯的文章 1、下載 下載地址&#xff1a;http://dev.mysql.com/downloads/mysql/5.6.html#downloads 下載版本&#xff1a;我這里選擇的5.6.33&#xff0c;通用版&#xff0c;linux下64位 也可以直接復制64位的下載地址&#xff0c;通過命令下載&a…

最全的微信小程序源代碼

wx-gesture-lock 微信小程序的手勢密碼 WXCustomSwitch 微信小程序自定義 Switch 組件模板 WeixinAppBdNovel 微信小程序demo&#xff1a;百度小說搜索 shitoujiandaobu 小程序&#xff1a;石頭剪刀布&#xff08;附代碼說明&#xff09; audiodemo 微信小程序開發之視頻播…