日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Django(part31)--admin后台数据库管理

發(fā)布時(shí)間:2023/12/19 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django(part31)--admin后台数据库管理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

學(xué)習(xí)筆記,僅供參考


文章目錄

    • admin后臺(tái)數(shù)據(jù)庫(kù)管理
      • 使用步驟
      • 自定義后臺(tái)管理數(shù)據(jù)表
        • 配置步驟
      • 模型管理器類
        • 模型管理器的使用方法
        • ModelAdmin模型管理器類中的高級(jí)管理功能
      • 數(shù)據(jù)庫(kù)表管理
        • 修改模型類字段的顯示名字
        • 通過(guò)Meta內(nèi)嵌類定義模型類的屬性及展現(xiàn)形式


admin后臺(tái)數(shù)據(jù)庫(kù)管理


django 提供了后臺(tái)管理數(shù)據(jù)庫(kù)的接口admin,我們可以在開(kāi)發(fā)的測(cè)試階段使用。django 會(huì)搜集所有已注冊(cè)的模型類,為這些模型類提拱數(shù)據(jù)管理界面,供開(kāi)發(fā)者使用。

在開(kāi)發(fā)階段,我們使用admin后臺(tái)數(shù)據(jù)庫(kù)管理界面進(jìn)行調(diào)試將非常的方便。


使用步驟


  • 第一步:創(chuàng)建后臺(tái)管理賬號(hào)

創(chuàng)建管理員帳號(hào),并根據(jù)提示完成注冊(cè):

F:\MyStudio\PythonStudio\goatbishop.project01\Django\mywebsite_db>python manage.py createsuperuser Username (leave blank to use 'goatbishop'): darkgoat Email address: goatbishop@gmail.com Password: Password (again): Superuser created successfully.

我們需要在Username處輸入用戶名,在Email address處輸入郵箱,在Password處輸入密碼(密碼要復(fù)雜些,否則會(huì)提示密碼太簡(jiǎn)單),在**Password (again)**處再次輸入相同的密碼(Django為了防止我們第一遍時(shí)輸入錯(cuò)誤)


  • 第二步:開(kāi)啟服務(wù)器
python manage.py runserver
  • 用注冊(cè)的帳號(hào)登陸后臺(tái)管理界面

后臺(tái)管理的登錄地址:http://127.0.0.1:8000/admin


我們向http://127.0.0.1:8000/admin發(fā)起請(qǐng)求:

輸入用戶名和密碼,點(diǎn)擊Log in,得到如下頁(yè)面:

我們點(diǎn)開(kāi)Users:

我們看到,這里有一張表,表里有一條記錄,這張表對(duì)應(yīng)著我們mywebdb數(shù)據(jù)庫(kù)中的auth_user數(shù)據(jù)表:

mysql> select id,username,email from auth_user; +----+----------+----------------------+ | id | username | email | +----+----------+----------------------+ | 1 | darkgoat | goatbishop@gmail.com | +----+----------+----------------------+ 1 row in set (0.00 sec)

我們點(diǎn)開(kāi)darkgoat,填入姓和名:


點(diǎn)擊保存,并查看auth_user數(shù)據(jù)表:

mysql> select username, first_name, last_name from auth_user; +----------+------------+-----------+ | username | first_name | last_name | +----------+------------+-----------+ | darkgoat | 揚(yáng) | 桂 | +----------+------------+-----------+ 1 row in set (0.00 sec)

更改成功!


自定義后臺(tái)管理數(shù)據(jù)表

若想要自己定義的模型類也能在 /admin 后臺(tái)管理界中顯示和管理,需要將自己的類注冊(cè)到后臺(tái)管理界面,添加自己定義模型類的后臺(tái)管理數(shù)據(jù)表的,需要用admin.site.register(自定義模型類) 方法進(jìn)行注冊(cè)


配置步驟

  • 在應(yīng)用app中的admin.py中導(dǎo)入注冊(cè)要管理的模型models類

我們打開(kāi)bookstore應(yīng)用的admin.py,導(dǎo)入模型類:

from . import models
  • 調(diào)用 admin.site.register 方法進(jìn)行注冊(cè)
from django.contrib import admin admin.site.register(models.Book) #admin.site.register(自定義模型類)

現(xiàn)在,我們回到http://127.0.0.1:8000/admin/后臺(tái)管理界面:

界面中多了一個(gè)Books,我們點(diǎn)進(jìn)去看看:

我們看到5本書(shū),這些記錄都是我們之前手動(dòng)添加到數(shù)據(jù)庫(kù)的。

現(xiàn)在,我們點(diǎn)進(jìn)去第一個(gè)記錄:

這個(gè)界面是Django通過(guò)我們的模型類,自動(dòng)幫我們生成的。在這個(gè)界面中,我們可以對(duì)記錄進(jìn)行修改或刪除。

現(xiàn)在,我們對(duì)這條記錄做出如下修改,并點(diǎn)擊保存:

回到http://127.0.0.1:8000/admin/bookstore/book/:


我們?cè)賹?duì)Author進(jìn)行注冊(cè),并刷新admin數(shù)據(jù)庫(kù)管理界面:

再點(diǎn)擊Authors:

我們發(fā)現(xiàn),這里是一堆Author object(#),而不像Books界面中顯示的那么直觀,利于我們進(jìn)行后續(xù)的判斷,這是因?yàn)槲覀冊(cè)贐ook模型類中對(duì)__str__方法進(jìn)行了重寫(xiě),現(xiàn)在,我們也對(duì)Author模型類的__str__方法進(jìn)行重寫(xiě)。

models.py

class Author(models.Model):name = models.CharField("姓名", max_length = 30, null = False, unique = True, db_index = True)age = models.IntegerField("年齡, ", null = False,default = 1)email = models.EmailField("郵箱", null = True)def __str__(self):string = "姓名:{}, 年齡:{}".format(self.name, self.age) return string

記得更改過(guò)models.py文件后要進(jìn)行遷移操作。


我們?cè)偎⑿乱幌陆缑?#xff1a;

very well


模型管理器類


模型管理器類可以用后臺(tái)管理界面添加新功能。后臺(tái)管理器類須繼承自 django.contrib.admin 里的 ModelAdmin 類


模型管理器的使用方法


  • 在 <應(yīng)用app>/admin.py 里定義模型管理器類
class XXXX_Manager(admin.ModelAdmin):......
  • 在<應(yīng)用app>/admin.py 里注冊(cè)管理器類與模型類關(guān)聯(lián)
from django.contrib import admin from . import models admin.site.register(models.YYYY, XXXX_Manager) #注冊(cè)管理器類與模型類關(guān)聯(lián) #models.YYYY是模型類 #管XXXX_Manager是管理器類

ModelAdmin模型管理器類中的高級(jí)管理功能


類成員功能
list_display控制哪些字段會(huì)顯示在Admin的修改列表頁(yè)面中
list_display_links控制list_display中的字段是否應(yīng)該鏈接到對(duì)象的“更改”頁(yè)面
list_filter設(shè)置激活A(yù)dmin修改列表頁(yè)面右側(cè)欄中的過(guò)濾器
search_fields設(shè)置啟用Admin更改列表頁(yè)面上的搜索框
list_editable設(shè)置在更改列表頁(yè)面上對(duì)某字段直接進(jìn)行編輯修改

其它參見(jiàn)https://docs.djangoproject.com/en/1.11/ref/contrib/admin/


  • 舉個(gè)例子

我們將Book管理器類與Book模型類關(guān)聯(lián)起來(lái),并在更改列表頁(yè)面中添加一些高級(jí)功能。


bookstore應(yīng)用下的admin.py文件:

from django.contrib import admin from . import models # Register your models here.class Book_Manager(admin.ModelAdmin):list_display = ['title', 'pub','exfacPrice', 'price']list_filter = ['pub']admin.site.register(models.Author) admin.site.register(models.Book, Book_Manager)

向Book更改列表頁(yè)面http://127.0.0.1:8000/admin/bookstore/book/發(fā)起請(qǐng)求:


數(shù)據(jù)庫(kù)表管理


修改模型類字段的顯示名字


在模型類中,各字段的第一個(gè)參數(shù)為verbose_name,此字段的值會(huì)在后臺(tái)數(shù)據(jù)庫(kù)管理頁(yè)面顯示,比如我們的Book模型類是這樣定義的:

class Book(models.Model):title = models.CharField("書(shū)名", max_length = 30)pub = models.CharField("出版社名", max_length = 50,null = True)exfacPrice = models.DecimalField("出廠價(jià)", max_digits = 6, decimal_places = 2,default = 0)price = models.DecimalField("售價(jià)", max_digits = 6, decimal_places = 2,default = 0)def __str__(self):string = "書(shū)名:%s, 出版社:%s" % (self.title, self.pub) return string

我們查看一下后臺(tái)數(shù)據(jù)庫(kù)管理頁(yè)面:


通過(guò)Meta內(nèi)嵌類定義模型類的屬性及展現(xiàn)形式


在模型類中,可以通過(guò)定義內(nèi)部類class Meta的方式,來(lái)重新定義當(dāng)前模型類和數(shù)據(jù)表的一些屬性信息。


  • 用法
class Book(models.Model):title = CharField(....)class Meta:1. db_table = '數(shù)據(jù)表名'- 該模型所用的數(shù)據(jù)表的名稱。(設(shè)置完成后需要立馬更新同步數(shù)據(jù)庫(kù))2. verbose_name = '單數(shù)名'- 該模型對(duì)象的一個(gè)易于理解的名稱(單數(shù)),用于顯示在/admin管理界面中3. verbose_name_plural = '復(fù)數(shù)名'- 該對(duì)象復(fù)數(shù)形式的名稱(復(fù)數(shù)),用于顯示在/admin管理界面中
  • 舉個(gè)例子

我們?cè)趍odels.py中新增一個(gè)Publisher模型類,并定義Meta內(nèi)部類:

class Publisher(models.Model):pub = models.CharField("出版社名", max_length = 50,null = True)booknumber = models.PositiveIntegerField("初版書(shū)籍總量", default = 0)tele = models.CharField("聯(lián)系電話", max_length = 11, null = False)class Meta:db_table = "china_publisher"verbose_name = "ChinaPublisher"verbose_name_plural = "ChinaPublishers"

在Django shell中給china_publisher數(shù)據(jù)表添加一些數(shù)據(jù):

In [2]: from bookstore import modelsIn [3]: models.Publisher.objects.create(pub="人民郵電出版社", tele="81055364") Out[3]: <Publisher: Publisher object (1)>In [4]: models.Publisher.objects.create(pub="清華大學(xué)出版社", tele="62783933") Out[4]: <Publisher: Publisher object (2)>In [5]: models.Publisher.objects.create(pub="機(jī)械工業(yè)出版社", tele="88379833") Out[5]: <Publisher: Publisher object (3)>In [6]: models.Publisher.objects.create(pub="電子工業(yè)出版社", tele="88258888") Out[6]: <Publisher: Publisher object (4)>

打開(kāi)admin數(shù)據(jù)庫(kù)管理界面:

點(diǎn)開(kāi)ChinaPublishers:

查看mywebdb數(shù)據(jù)庫(kù)中的數(shù)據(jù)表們:

mysql> show tables; +----------------------------+ | Tables_in_mywebdb | +----------------------------+ | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | bookstore_author | | bookstore_book | | china_publisher | | django_admin_log | | django_content_type | | django_migrations | | django_session | +----------------------------+ 13 rows in set (0.00 sec)

可以看到,Publisher模型類創(chuàng)建的數(shù)據(jù)表名字為china_publisher。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的Django(part31)--admin后台数据库管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。