4.django筆記之admin


作者:劉耀
QQ:22102107

django-Admin

django amdin是django提供的一個后台管理頁面,改管理頁面提供完善的html和css,使得你在通過Model創建完數據庫表之后,就可以對數據進行增刪改查,

而使用django admin 則需要以下步驟:

1.創建后台管理員

2.配置url

3.注冊和配置django admin后台管理頁面

步驟:

1.工程和創建app

注冊app
修改settings

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'book',
]	

2.設置表結構

以用圖書管理信息設計表結構

修改book下面的model.py
加入以下內容:

from django.db import models

# Create your models here.
class Author(models.Model):
    #作者
    name = models.CharField(max_length=30,verbose_name='姓名')#姓名
    age = models.CharField(max_length=30,verbose_name='年齡')#年齡
    phone = models.CharField(max_length=11,verbose_name='手機號')#手機號
    email = models.EmailField(verbose_name='郵箱')#郵箱
    def __str__(self):
        return self.name
    class Meta:
        verbose_name = '作者'
        verbose_name_plural = '作者'
class Publisher(models.Model):#出版社
    name = models.CharField(max_length=30,verbose_name='出版社')#出版社姓名
    address = models.CharField(max_length=50,verbose_name='地址')#出版社地址
    city = models.CharField(max_length=60,verbose_name='城市')#出版社城市
    state_province = models.CharField(max_length=30,verbose_name='省份')#省份
    country = models.CharField(max_length=50,verbose_name='國家')#國家
    website = models.URLField(verbose_name='官網')#官網
    def __str__(self):
        return self.name
    class Meta:
        verbose_name = '出版社'
        verbose_name_plural = '出版社'
class Book(models.Model):#書
    name = models.CharField(max_length=60,verbose_name='書名')#書名
    author = models.ManyToManyField(Author,verbose_name='作者')#關聯作者
    publisher = models.ForeignKey(Publisher,verbose_name='出版社')#關聯
    publication_date = models.DateField(verbose_name='出版時間')#時間
    def __str__(self):
        return self.name
    class Meta:
        verbose_name = '書名'
        verbose_name_plural = '書名'

3.生成表結構

python manage.py makemigrations

python manage.py migrate

4.創建超級管理員

python manage.py createsuperuser
Username (leave blank to use 'administrator'): admin
Email address: 870000@163.com
Password:
Password (again):
Superuser created successfully.

5.查看admin后台

運行python manage.py runserver 8000

訪問:http://127.0.0.1:8000/admin

此時admin是不顯示咱們新加入的book相關的model
如果要加入那么需要將model注冊到admin里

6.將表加入注冊到admin

修改book項目下面的admin.py

from django.contrib import admin

# Register your models here.
from book import models

#將作者注冊到admin后台
admin.site.register(models.Author)

#將書籍注冊到admin后台
admin.site.register(models.Book)

#將版社注冊到admin后台
admin.site.register(models.Publisher)

后台查看:

之所以顯示中文是因為我在定義model的時候 使用了

class Meta:
	verbose_name = '書名'
	verbose_name_plural = '書名'

verbose_name的意思很簡單,就是給你的模型類起一個更可讀的名字:
為了從admin后台更好的顯示罷了。其他沒吊用。

7.使用admin插入一條新數據

以作者為例,點擊add

輸入以下字段

顯示

為什么只顯示劉耀這個作者呢,其他信息不顯示呢,是因為我在定義model的時候
使用了

def __str__(self):
    return self.name
這樣的時候就是為了返回用戶名給admin看。

8.使用admin的方法展示想要展示的數據

list_display = ('字段名')#把字段信息全部顯示出來

修改book下面的admin.py
加入以下內容:

#創建類
class AuthorAdmin(admin.ModelAdmin):
	#把這個作者表里的想要顯示值放進去
	list_display = ('name','age','phone','email')
#將作者注冊到admin后台
admin.site.register(models.Author,AuthorAdmin)
#其他內容不需要修改

顯示:

9.搜索功能

search_fields = ('name','age','phone','email') 這樣就可以按照 標題或內容搜索了

代碼如下:
from django.contrib import admin

# Register your models here.
from book import models

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('name','age','phone','email')
	#添加搜索功能
    search_fields = ('name','age','phone','email')
#將作者注冊到admin后台
admin.site.register(models.Author,AuthorAdmin)

顯示:

10.編輯時候顯示順序

fields = ('name','age','phone','email') #edit界面就按這個順序顯示

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('name','age','phone','email')
    search_fields = ('name','age','phone','email')
	#編輯的時候首先顯示名字 年齡 郵箱 和手機號
    fields = ('name','age','email','phone')
#將作者注冊到admin后台
admin.site.register(models.Author,AuthorAdmin)

顯示:

11.排序

ordering = ('age',) 按照年齡排序

from django.contrib import admin

# Register your models here.
from book import models

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('name','age','phone','email')
    search_fields = ('name','age','phone','email')
    fields = ('name','age','email','phone')
	#按照年齡排序
    ordering = ('age',)
#將作者注冊到admin后台
admin.site.register(models.Author,AuthorAdmin)

顯示:

12.過濾器

list_filter = ('name',)#頁面右邊會出現相應的過濾器選項

13.顯示外鍵的詳細信息

raw_id_fields = ("內容",)

對於ForeighKey字段,也有相應的設置,用來輸入字段的ID,點擊邊上的
放大鏡圖標,也會彈出選擇框

class BookAdmin(admin.ModelAdmin):
    raw_id_fields = ('author','publisher',)
    list_display = ('name','publication_date',)

#將書籍注冊到admin后台
admin.site.register(models.Book,BookAdmin)

顯示:

14.擴展(使用裝飾器注冊admin)

@admin.register(models.Book)
class BookAdmin(admin.ModelAdmin):
    raw_id_fields = ('author','publisher',)
    list_display = ('name','publication_date',)

還沒寫完


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM