django (三) admin后台系统
生活随笔
收集整理的這篇文章主要介紹了
django (三) admin后台系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 安裝MySQL
1,安裝mysql: sudo apt install mysql-server ? (安裝過程中輸入密碼并牢記) ? 2,安裝后進入mysql: mysql -u用戶名 -p密碼 mysql -uroot -proot ? 3,在Django中配置和使用mysql數據庫 使用mysql數據庫,settings中配置如下: DATABASES = { ? 'default': { ? ? ? 'ENGINE': 'django.db.backends.mysql', ? ? ? 'NAME': 'mydb', ? ? ? 'USER': 'root', ? ? ? 'PASSWORD': 'root', ? ? ? 'HOST': '127.0.0.1', ? ? ? 'PORT': '3306', ? } } 4, 添加PyMySQL 然后使用pip添加依賴包: pip install PyMySQL 并在工程目錄下的__init__.py中添加以下代碼來配置PyMySQL: import pymysql pymysql.install_as_MySQLdb()2. django admin后臺系統
Django中默認集成了后臺數據管理頁面,通過簡單的配置就可以實現模型后臺的Web控制臺。 管理界面通常是給系統管理員使用的,用來完成數據的輸入,刪除,查詢等工作。 使用以下models來示范admin后臺系統的用法。 ? 創建一個項目, 用來說明出版社, 書籍和作者的關系。 ? 假定關系:作者:書籍 => 1:n (一本書由一個作者完成, 一個作者可以創作多本書) 出版社:書籍 => n:n (一個出版社可以出版多本書, 一本書可以由多個出版社出版) ? 要求: ? 1. 創建作者author, 出版社publisher,書籍book三個應用. ? 2. 給每個應用分別創建首頁index.html,且可以在瀏覽器打開index頁面. ? 3. 在書籍的index.html中有一個"查看所有書籍"的超鏈接按鈕,點擊進入書籍列表list.html頁面. ? 4. 在書籍list.html中顯示所有書名,點擊書名可以進入書籍詳情detail.html ? 5. 在書籍detail.html中可以點擊該書的作者和出版社,進入作者的detail.html和出版社的detail.html頁面 ? models.py內容如下: # 出版社 class Publisher(models.Model): ? ? ? name = models.CharField(max_length=30) ? ? ? address = models.CharField(max_length=100) ? ? ? city = models.CharField(max_length=30) ? ? ? state_province = models.CharField(max_length=30) ? ? ? country = models.CharField(max_length=20) ? ? ? website = models.URLField() ? ? ? # 作者 class Author(models.Model): ? ? ? first_name = models.CharField(max_length=30) ? ? ? last_name = models.CharField(max_length=30) ? ? ? email = models.EmailField() ? ? ? gender = models.BooleanField(default=True) ? # 書籍 class Book(models.Model): ? ? ? title = models.CharField(max_length=100) ? ? ? author = models.ForeignKey(Author) ? ? ? publishers = models.ManyToManyField(Publisher) ? ? ? publish_date = models.DateField() ? 使用admin后臺系統之前,需要先創建一個系統管理員,創建管理員之前需先同步數據庫。 python manager.py createsuperuser 設置為中文 settings中LANGUAGE_CODE = 'zh-hans' 設置時間,時區 TIME_ZONE='Asia/Shanghai' ? 添加自己的數據模型,在admin.py中注冊: admin.site.register(Publisher) admin.site.register(Author) admin.site.register(Book) 在admin中給model添加數據。 給模型加上__str__函數,比如給Author模型添加str函數,讓author的顯示更加友好: def __str__(self): ? return '%s %s' % (self.first_name, self.last_name) ? 希望控制admin中添加model數據時的動作,可以修改相應字段的屬性。 比如author的email字段運行添加的時候為空,可以在email字段定義中加上 blank=True(可以空白), 比如book的publication_date添加 blank=True, null=True(可以為null)屬性。 修改models屬性之后記得及時做數據遷移。 ? 使用verbose_name屬性指定字段的別名: ? 比如給publisher的name字段指定一個中文的別名verbose_name='出版社名稱'。 在models的修改頁面,默認顯示的是models定義的str函數返回的字符串。 ? ? ? ? ?3. 定制admin
通過定義MoldelAdmin來定制model在admin的表現。比如給Author定義AuthorAdmin。 class AuthorAdmin(admin.ModelAdmin): list_display = ('first_name', 'last_name', 'email') 相應的注冊代碼也要變化: admin.site.register(Author, AuthorAdmin) ? 給Author添加一個搜索框: search_fields = ('first_name', 'last_name') 給book添加一個過濾器 list_filter = ('publication_date',) 過濾器不光可以作用在日期字段上,還可以作用在boolean類型和外鍵上。 另一種增加日期過濾的方式: date_hierarchy = 'publication_date' 字段排序: ordering = ('-publication_date',) 修改編輯頁面顯示的字段及顯示順序,默認按照models中字段的定義順序顯示: fields = ('title', 'authors', 'publisher', 'publication_date') 與fields相反的字段是exclude exclude = ['publication_date',] 改善多對多關系中對象選擇操作,比如給BookAdmin添加如下屬性: filter_horizontal = ('authors',) filter_horizontal和filter_vertical 選項只適用于多對多關系。 ? 一對多的外鍵關系,admin使用select box下拉菜單來表示。如不想用select box,可添加如下屬性,讓原來一次性加載所有publisher的select box變成填寫publisher的id: raw_id_fields = ('publisher',) ? 讓字段分組顯示,fieldsets和上面提到的field不能同時出現: fieldsets = ( ? ('作者', {'fields': ('authors',)}), ? ('出版商', {'fields': ('publisher',)}), ) ? 定制list_display字段的顯示。比如給Author加一個布爾型gender字段,來表示性別。為了讓顯示更加人性化: # 定制顯示屬性 ? def showgender(self): ? ? ? if self.gender: ? ? ? ? ? return '男' ? ? ? else: ? ? ? ? ? return '女' ? list_display = ('first_name', 'last_name', 'email', showgender) 給該函數設置簡短描述,讓顯示更加友好: showgender.short_description = '性別' ? 可以將modeladmin的屬性簡單劃分為列表頁屬性和添加、修改頁屬性 ? # 列表頁屬性 list_display,list_filter,search_fields,list_per_page等 ? # 添加、修改頁屬性 fields ,fieldsets, filter_horizontal, raw_id_fields等轉載于:https://www.cnblogs.com/gugubeng/p/9723360.html
總結
以上是生活随笔為你收集整理的django (三) admin后台系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server 代码颜色
- 下一篇: Win10系统的背景颜色