一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Django admin實現圖書管理系統菜鳥級教程完整實例

Django admin實現圖書管理系統菜鳥級教程完整實例

2020-12-24 00:22mengwei Python

這篇文章主要介紹了Django admin實現圖書管理系統菜鳥級教程完整實例,具有一定借鑒價值,需要的朋友可以參考下。

Django 有著強大而又及其易用的admin后臺,在這里,你可以輕松實現復雜代碼實現的功能,如搜索,篩選,分頁,題目可編輯,多選框.

簡單到,一行代碼就可以實現一個功能,而且模塊之間耦合得相當完美.

不信,一起來看看吧!?用Django實現管理書籍的系統,并能在前臺界面對書籍進行增刪查改,篩選,分頁,以及批量查詢修改功能.

準備工作

?
1
#準備好你的數據庫模型思維導圖

Django admin實現圖書管理系統菜鳥級教程完整實例

0.新建一個Django項目,起名為books,并且同時新建一個應用book11

Django admin實現圖書管理系統菜鳥級教程完整實例

1.首先要設置models模塊,根據思維導圖,我們知道需要定義3張表,分別是Book,Author,Publisher.

1.1然而,django強大的地方在于,你無需在數據庫開辟一張表,ORM的模型,讓你只需要關注你要操作的對象.這里用類對象,來替代表,從而使得定義一張數據表Book,就只需要簡單的創建Book類對象,即可

?
1
2
3
4
5
6
7
8
#先設計作者Author對象(表)[models.py]
?
class Author(models.Model): #繼承于models.Model這個父類,從而實現多態
  first_name=models.CharField(max_length=32) #名字的字段,使用字符串格式,最大長度32
  last_name=models.CharField(max_length=32)
  email=models.EmailField()         #email字段,使用email自帶的格式
  def __unicode__(self):           #定義unicode函數,是為了讓對象在實例化的時候,可以返回打印輸出它的名字<阿文>.不至于顯示為<** object>
    return "%s--%s"%(self.first_name,self.last_name)
?
1
2
3
4
5
6
7
8
9
10
#出版社
class Publisher(models.Model):
  name=models.CharField(max_length=64,unique=True) #出版社名稱,唯一,是主鍵
  address=models.CharField(max_length=64,unique=True)
  city=models.CharField(max_length=32)
  state_province=models.CharField(max_length=32)
  country=models.CharField(max_length=32)
  website=models.URLField()            #主頁,采用自帶的url格式
  def __unicode__(self):
    return "%s"%(self.name)
?
1
2
3
4
5
6
#定義一個選項,里面包含3個可選框,用以下面的書籍表publisher_state下拉選擇
STATUS_CHOICES=(
  ('checkout',u'已出版'),
  ('dai',u'待出版'),
  ('status',u'審核中'),
)
?
1
2
3
4
5
6
7
8
9
#書籍表
class Book(models.Model):
  name=models.CharField(max_length=64
  authors=models.ManyToManyField(Author) #作者,多對多的關系
  publisher=models.ForeignKey(Publisher) #出版社,外鍵管理到Publisher表
  publisher_date=models.DateField(auto_now_add=True)
  publisher_state=models.CharField(max_length=20,choices=STATUS_CHOICES,default='checkout') #出版狀態,是一個可選框
  def __unicode__(self):
    return "%s--%s"%(self.name,self.publisher_date)

完整的代碼:

Django admin實現圖書管理系統菜鳥級教程完整實例

1.2然后,創建完models后,一定要創建映射文件,并且映射到數據庫,否則數據庫是不存在的

?
1
python manage.py makemigrations
?
1
python manage.py migrate

2.調試shell的models模塊,使用對象操作增刪查改

?
1
2
3
4
5
6
7
8
9
10
##進入shell 模式
python manage.py shell
##導入Publisher對象
from book11.models import Publisher
##查詢id=1的queryset賦值給p
p=Publisher.objects.get(id=1)
#對的對象進行操作,修改city="changsha",等價于[Publisher.objects.filter(id=1).update(city='changsha')]操作.
p.city='changsha'
#需要提交保存,否則不生效
p.save()

前后對比,操作數據庫字段就像操作對象一樣簡單!這便是ORM的優勢

Django admin實現圖書管理系統菜鳥級教程完整實例

Django admin實現圖書管理系統菜鳥級教程完整實例

3.增加一個admin用戶

?
1
2
3
4
5
6
G:\git\web\books>python manage.py createsuperuser #增加一個超級用戶
Username (leave blank to use 'huan5'): admin #用戶名
Email address: [email protected]         #郵箱
Password:                  #輸8位密碼2次
Password (again):
Superuser created successfully.

4.編輯admin.py

4.1將models導入,并且注冊網站的Author,Publisher,Boos模塊

?
1
2
3
4
5
6
#設置默認編碼符
# -*- coding: utf-8 -*-
from book11 import models #導入數據庫
admin.site.register(models.Author)
admin.site.register(models.Publisher)
admin.site.register(models.Book)
?
1
2
3
4
#啟動服務
python manage.py runserver 0.0.0.0:8086
#并打開瀏覽器執行
http://127.0.0.1:8086

Django admin實現圖書管理系統菜鳥級教程完整實例

書名已經成功顯示出來

4.2配置一些擴展功能

?
1
2
3
4
5
6
7
8
9
10
11
12
from book11 import models
# 創建一個Bookadmin的modeladmin的子類
class Bookadmin(admin.ModelAdmin):
  list_display=('id','name','publisher','publisher_date','publisher_state')
  search_fields=('name',)
  list_filter=('publisher','publisher_date',)
  list_per_page=5
  list_editable=('name','publisher_state',)
  list_select_related=('publisher',)
  filter_horizontal=('authors',)
  raw_id_fields=('publisher',)
  actions=['set_publisher_checkout','set_publisher_dai','set_publisher_status','set_publisher_del',]
?
1
2
3
admin.site.register(models.Author,Authoradmin) #不要忘了把這些定義好的擴展寫進來
admin.site.register(models.Publisher,Publisheradmin)
admin.site.register(models.Book,Bookadmin)

Django admin實現圖書管理系統菜鳥級教程完整實例

Django admin實現圖書管理系統菜鳥級教程完整實例

?
1
2
3
#配置作者頁面的擴展內容
class Authoradmin(admin.ModelAdmin):
  list_display=('first_name','last_name','email')

Django admin實現圖書管理系統菜鳥級教程完整實例

?
1
2
3
#配置出版社的擴展顯示
class Publisheradmin(admin.ModelAdmin):
  list_display = ('name','address','country',)

Django admin實現圖書管理系統菜鳥級教程完整實例

4.3為了批量操作,我們給他增加了actions,定義如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  def set_publisher_checkout(modeladmin,request,queryset):
    selected=request.POST.getlist(admin.ACTION_CHECKBOX_NAME) #選中傳入的表單中,勾選的checkbox對應的id集合
    models.Book.objects.filter(id__in=selected).update(publisher_state='checkout') #將所有選中的id對象,修改出版狀態為checkout
  def set_publisher_dai(modeladmin,request,queryset):
    selected=request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
    models.Book.objects.filter(id__in=selected).update(publisher_state='dai')
  def set_publisher_status(modeladmin,request,queryset):
    selected=request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
    models.Book.objects.filter(id__in=selected).update(publisher_state='status')
  def set_publisher_del(modeladmin,request,queryset):    #########擴展部分,增加對選中的記錄今夕刪除!###########
    selected=request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
    models.Book.objects.filter(id__in=selected).delete()
?
  set_publisher_checkout.short_description="設置所有的書籍為--已出版"     #為了使界面更加友好,添加別名
  set_publisher_status.short_description="設置所有的書籍為--審核中"
  set_publisher_dai.short_description="設置所有的書籍為--待出版"
  set_publisher_del.short_description="設置所有的書籍為--刪除"

效果圖

Django admin實現圖書管理系統菜鳥級教程完整實例

調試成功

附上admin.py的全部代碼,方便調試不成功的小伙伴

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
?
from django.contrib import admin
from book11 import models
# Register your models here.
class Bookadmin(admin.ModelAdmin):
  list_display=('id','name','publisher','publisher_date','publisher_state')
  search_fields=('name',)
  list_filter=('publisher','publisher_date',)
  list_per_page=5
  list_editable=('name','publisher_state',)
  list_select_related=('publisher',)
  filter_horizontal=('authors',)
  raw_id_fields=('publisher',)
  actions=['set_publisher_checkout','set_publisher_dai','set_publisher_status','set_publisher_del',]
?
  def set_publisher_checkout(modeladmin,request,queryset):
    selected=request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
    models.Book.objects.filter(id__in=selected).update(publisher_state='checkout')
  def set_publisher_dai(modeladmin,request,queryset):
    selected=request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
    models.Book.objects.filter(id__in=selected).update(publisher_state='dai')
  def set_publisher_status(modeladmin,request,queryset):
    selected=request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
    models.Book.objects.filter(id__in=selected).update(publisher_state='status')
  def set_publisher_del(modeladmin,request,queryset):
    selected=request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
    models.Book.objects.filter(id__in=selected).delete()
?
  set_publisher_checkout.short_description="設置所有的書籍為--已出版"
  set_publisher_status.short_description="設置所有的書籍為--審核中"
  set_publisher_dai.short_description="設置所有的書籍為--待出版"
  set_publisher_del.short_description="設置所有的書籍為--刪除"
?
class Authoradmin(admin.ModelAdmin):
  list_display=('first_name','last_name','email')
?
class Publisheradmin(admin.ModelAdmin):
  list_display = ('name','address','country',)
?
admin.site.register(models.Author,Authoradmin)
admin.site.register(models.Publisher,Publisheradmin)
admin.site.register(models.Book,Bookadmin)

不禁感嘆再也沒有比django更加簡單好用,容易操作的后臺了.

總結

Django真的太強大。。

以上就是本文關于Django admin實現圖書管理系統菜鳥級教程完整實例的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://www.yueguangzu.net/?p=1181

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久精品日本一区二区三区 | 欧美xxxxx69 | 亚洲国产成人久久综合一区77 | 视频久久 | 日韩一品在线播放视频一品免费 | 精品卡1卡2卡三卡免费视频 | 996免费视频国产在线播放 | 成人性色生活片免费网 | 欧美草逼视频 | 精品国产乱码久久久久久人妻 | 2022国产麻豆剧传媒剧情 | 人人斗地主| 亚洲国产精品一区二区首页 | xxx88视频在线观看 | 欧美草逼视频 | 天天爱天天做天天爽天天躁 | 农村美女沟厕嘘嘘被偷看 | 农村妇女野战bbxxx农村妇女 | 古装一级无遮挡毛片免费观看 | 人与善xuanwen在线400 | 亚洲风情无码免费视频 | 久久精品观看影院2828 | 九色PORNY蝌蚪视频首页 | 色碰视频 | 国产欧美日韩亚洲精品区2345 | 关晓彤被调教出奶水 | 大杳蕉在线影院在线播放 | 97久久精品午夜一区二区 | 日本中文字幕在线观看视频 | 精品欧美男同同性videos | 日韩精品一区二区三区视频 | 成人女人天堂午夜视频 | 亚洲国产成人久久综合区 | 日本ccc三级| 99精品视频免费在线观看 | 亚洲欧美一级夜夜爽w | 国产成人lu在线视频 | 欧美有码| 成人在线视频观看 | 青青青青青国产免费手机看视频 | 亚洲 欧美 中文字幕 在线 |