国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

圖書管理系統(tǒng)(python、django)

這篇具有很好參考價(jià)值的文章主要介紹了圖書管理系統(tǒng)(python、django)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 系統(tǒng)簡介

該實(shí)驗(yàn)設(shè)計(jì)開發(fā)一個(gè)簡單的圖書管理數(shù)據(jù)庫系統(tǒng),包括圖書館內(nèi)書籍的信息、學(xué)校在校師生的信息以及師生的借閱信息。此系統(tǒng)用戶面向圖書管理員和借閱讀者,圖書館管理員可以完成圖書、讀者等基本信息的增加、刪除和修改、查看;讀者可以進(jìn)行圖書的借閱、查看、預(yù)約等操作。構(gòu)建基于B/S架構(gòu),MySQL數(shù)據(jù)庫為基礎(chǔ),應(yīng)用Django框架建設(shè)過程和方法。本系統(tǒng)主要包含以下基本功能,主要是前臺展示和后臺管理兩部分,其中前臺展示包括登陸模塊、首頁展示、書籍檢索、分類查看等。

系統(tǒng)開發(fā)技術(shù)及工具:Python? Django ?HTML? MySQL數(shù)據(jù)庫 Windows11系統(tǒng) ?PyCharm

  1. 2.系統(tǒng)分析
  2. 2.1 功能簡介:
  3. 圖書管理系統(tǒng),python,django,html5,mysql

?

2.2 功能需求描述

借閱功能:

圖書出借時(shí)考慮的問題:

讀者是否因?yàn)槌?、罰款等情況被關(guān)閉了借閱權(quán)限;

讀者是否已經(jīng)借滿其限額。

該書是否不在庫中;

如果不存在以上情況,則可以出借。

預(yù)約功能:

讀者想借的書如果不在庫中(已經(jīng)被出借),讀者可以預(yù)約該圖書

讀者管理功能:

對讀者信息進(jìn)行查看、添加、修改、刪除。將讀者分為不同類別,賦以不同權(quán)限。

系統(tǒng)管理功能:

對管理員的登錄賬號、密碼進(jìn)行添加、修改、刪除。

違規(guī)管理功能:

對違規(guī)信息進(jìn)行查看、添加、修改、刪除。

3系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)

3.1系統(tǒng)概念模型設(shè)計(jì)

數(shù)據(jù)庫需要描述的數(shù)據(jù)信息包括以下幾種:

(1)讀者信息

(2)書籍信息

(3)管理員信息

(4)讀者與書籍之間的關(guān)系(借閱關(guān)系E-R圖)

3.2數(shù)據(jù)庫的詳細(xì)設(shè)計(jì)

3.2.1數(shù)據(jù)表的詳細(xì)設(shè)計(jì)

圖書管理系統(tǒng)由三個(gè)實(shí)體:圖書實(shí)體,讀者實(shí)體,管理員實(shí)體,圖書種類實(shí)體組成,共六個(gè)表如下:

1、書籍表

屬性:圖書編號,ISBN,書名,作者,出版社,出版日期,價(jià)格,學(xué)科類型,藏書類型,總量,余量

主鍵:圖書編號

2、讀者表

屬性:讀者編號,讀者姓名,聯(lián)系電話,郵箱地址,所在系,權(quán)限狀況

主鍵:讀者編號

3、管理員用戶表

屬性:編號,賬號,密碼,姓名

4、借閱表

屬性:圖書編號,讀者編號,借閱日期,應(yīng)還日期

5、預(yù)約信息

屬性:編號,圖書編號,讀者編號,預(yù)約日期

6、違規(guī)表

屬性:編號,讀者編號,圖書編號,逾期(0/1),破壞書籍(0/1)

3.2.2 E-R圖

1、圖書實(shí)體E-R圖

圖書具有圖書編號,ISBN,書名,作者,出版社,出版日期,價(jià)格,總量,余量等九個(gè)屬性,便于讀者在使用圖書館管理系統(tǒng)時(shí),更加準(zhǔn)確的定位到所選圖書的位置,了解圖書的信息。也可以方便讀者利用碎片化的信息,從大量的圖書中篩選自己可能心儀圖書。

圖書管理系統(tǒng),python,django,html5,mysql

?

2、圖書館管理員實(shí)體E-R圖

圖書管理員實(shí)體具有編號,賬號,密碼,姓名,聯(lián)系方式

圖書管理系統(tǒng),python,django,html5,mysql

3、讀者實(shí)體E-R圖

讀者具有讀者編號,讀者姓名,聯(lián)系電話,郵箱地址,備注,便于圖書管理員及時(shí)的維護(hù)管理借閱系統(tǒng),明確每一本圖書的去向,對與圖書館圖書的情況有一個(gè)把握。維護(hù)圖書管理系統(tǒng)的正常運(yùn)行。

圖書管理系統(tǒng),python,django,html5,mysql

4、總體E-R圖

在圖書管理系統(tǒng)中,一名讀者可以借閱多本圖書,多名圖書管理員同時(shí)管理多本圖書,一名讀書管理員可以同時(shí)管理多名讀者。通過實(shí)體之間的相互聯(lián)系,構(gòu)成了圖書管理系統(tǒng)的總體E-R圖。

圖書管理系統(tǒng),python,django,html5,mysql

3.3表設(shè)計(jì)

1、讀者表(reader)

列名

類型

長度

約束

備注

id

int

主鍵

編號

reader_id

int

11

學(xué)號

password

char

20

密碼

name

char

10

讀者姓名

telephone

char

15

聯(lián)系電話

email

char

30

郵箱地址

dept

char

20

所在院系

right

int

1

借閱權(quán)限(0或1)

2、圖書表(book)

列名

類型

長度

約束

備注

id

int

主鍵

編號

bookname

char

20

書籍名稱

author

char

20

書籍作者

pubdate

date

出版日期

publish

char

30

出版社

price

decimal

7,2

非空

價(jià)格

ISBN

char

17

非空

書籍ISBN碼

bookclass

int

11

外鍵

學(xué)科類型

total

int

非空

總量

margin

int

非空

余量

booktype

int

11

外鍵

藏書類型

  1. 管理員用戶表(admin)

列名

類型

長度

約束

備注

id

Int

主鍵

  1. 管理員編號

usernum

Char

20

  1. 管理員賬號

password

Char

11

  1. 賬號密碼

username

char

10

管理員姓名

4.借閱表(borrow)

列名

類型

長度

約束

備注

id

int

主鍵

借閱編號

readerid

int

讀者編號

bookid

int

圖書編號

borrowdate

date

出借日期

due

date

應(yīng)還日期

5.預(yù)約表(preconcert)

列名

類型

長度

約束

備注

id

int

主鍵

預(yù)約編號

readerid

int

讀者編號

bookid

int

圖書編號

predate

date

預(yù)約日期

6.違規(guī)表(break_rule)

列名

類型

長度

約束

備注

id

int

主鍵

違規(guī)編號

reader_id

int

讀者編號

book_id

int

圖書編號

verdue

int

逾期(0或1)

destory

int

破壞書籍(0或1)

3配置環(huán)境

3.1安裝和配置環(huán)境

3.3表設(shè)計(jì)

1、讀者表(reader)

列名

類型

長度

約束

備注

id

int

主鍵

編號

reader_id

int

11

學(xué)號

password

char

20

密碼

name

char

10

讀者姓名

telephone

char

15

聯(lián)系電話

email

char

30

郵箱地址

dept

char

20

所在院系

right

int

1

借閱權(quán)限(0或1)

2、圖書表(book)

列名

類型

長度

約束

備注

id

int

主鍵

編號

bookname

char

20

書籍名稱

author

char

20

書籍作者

pubdate

date

出版日期

publish

char

30

出版社

price

decimal

7,2

非空

價(jià)格

ISBN

char

17

非空

書籍ISBN碼

bookclass

int

11

外鍵

學(xué)科類型

total

int

非空

總量

margin

int

非空

余量

booktype

int

11

外鍵

藏書類型

  1. 管理員用戶表(admin)

列名

類型

長度

約束

備注

id

Int

主鍵

  1. 管理員編號

usernum

Char

20

  1. 管理員賬號

password

Char

11

  1. 賬號密碼

username

char

10

管理員姓名

4.借閱表(borrow)

列名

類型

長度

約束

備注

id

int

主鍵

借閱編號

readerid

int

讀者編號

bookid

int

圖書編號

borrowdate

date

出借日期

due

date

應(yīng)還日期

5.預(yù)約表(preconcert)

列名

類型

長度

約束

備注

id

int

主鍵

預(yù)約編號

readerid

int

讀者編號

bookid

int

圖書編號

predate

date

預(yù)約日期

6.違規(guī)表(break_rule)

列名

類型

長度

約束

備注

id

int

主鍵

違規(guī)編號

reader_id

int

讀者編號

book_id

int

圖書編號

verdue

int

逾期(0或1)

destory

int

破壞書籍(0或1)

3配置環(huán)境

3.1安裝和配置環(huán)境

3.3表設(shè)計(jì)

1、讀者表(reader)

列名

類型

長度

約束

備注

id

int

主鍵

編號

reader_id

int

11

學(xué)號

password

char

20

密碼

name

char

10

讀者姓名

telephone

char

15

聯(lián)系電話

email

char

30

郵箱地址

dept

char

20

所在院系

right

int

1

借閱權(quán)限(0或1)

2、圖書表(book)

列名

類型

長度

約束

備注

id

int

主鍵

編號

bookname

char

20

書籍名稱

author

char

20

書籍作者

pubdate

date

出版日期

publish

char

30

出版社

price

decimal

7,2

非空

價(jià)格

ISBN

char

17

非空

書籍ISBN碼

bookclass

int

11

外鍵

學(xué)科類型

total

int

非空

總量

margin

int

非空

余量

booktype

int

11

外鍵

藏書類型

  1. 管理員用戶表(admin)

列名

類型

長度

約束

備注

id

Int

主鍵

  1. 管理員編號

usernum

Char

20

  1. 管理員賬號

password

Char

11

  1. 賬號密碼

username

char

10

管理員姓名

4.借閱表(borrow)

列名

類型

長度

約束

備注

id

int

主鍵

借閱編號

readerid

int

讀者編號

bookid

int

圖書編號

borrowdate

date

出借日期

due

date

應(yīng)還日期

5.預(yù)約表(preconcert)

列名

類型

長度

約束

備注

id

int

主鍵

預(yù)約編號

readerid

int

讀者編號

bookid

int

圖書編號

predate

date

預(yù)約日期

6.違規(guī)表(break_rule)

列名

類型

長度

約束

備注

id

int

主鍵

違規(guī)編號

reader_id

int

讀者編號

book_id

int

圖書編號

verdue

int

逾期(0或1)

destory

int

破壞書籍(0或1)

3配置環(huán)境

3.1安裝和配置環(huán)境

選擇Pycharm工具進(jìn)行本次項(xiàng)目的制作

  1. 創(chuàng)建django項(xiàng)目

圖書管理系統(tǒng),python,django,html5,mysql

?

目錄說明:

manage.py:一個(gè)命令行工具,可以說Django項(xiàng)目就是從這個(gè)文件開始執(zhí)行的。

_init _.py:一個(gè)空文件,表示mytest應(yīng)該被看做一個(gè)python包;

settings.py:整個(gè)項(xiàng)目的配置參數(shù)文件;

urls.py:項(xiàng)目的URL聲明,一般項(xiàng)目的頂級url正則匹配放置在這里;

wsgi.py:項(xiàng)目與WSGI兼容的Web服務(wù)器入口;

2.創(chuàng)建應(yīng)用

(1)項(xiàng)目創(chuàng)建完成后需要有具體的應(yīng)用

圖書管理系統(tǒng),python,django,html5,mysql

?

(2)創(chuàng)建后生成目錄:

admin.py: 模型注冊和后臺管理相關(guān)的文件;

_init_.py: 應(yīng)用應(yīng)該被看做一個(gè)Python包;

migrations: 用來放置應(yīng)用模型的遷移腳本文件;

models.py: 定義模型;

test.py: 放置項(xiàng)目的測試文件;

viems.py: 定義視圖;

圖書管理系統(tǒng),python,django,html5,mysql

?

(3)添加應(yīng)用

打開settings.py,INSTALLED_APPS下添加:'app01'

3.2配置數(shù)據(jù)庫

在settings.py下:

DATABASES = {

??? 'default': {

??????? 'ENGINE': 'django.db.backends.mysql',

??????? 'NAME': 'BookSystem',

??????? 'USER':'root',

??????? 'PASSWORD':'root',

??????? 'HOST':'localhost',

??????? 'POST':3306,

??? }

}

另外django連接mysql需要pymysql包的支持,所以先安裝pymysql:

在終端:pip install pymysql

安裝完畢,需要導(dǎo)入到django中,打開應(yīng)用_init_.py文件,加入代碼:

import pymysql

pymysql.install_as_MySQLdb()? # 與mysql交互的函數(shù)

3.3配置模板和靜態(tài)文件

?圖書管理系統(tǒng),python,django,html5,mysql

圖書管理系統(tǒng),python,django,html5,mysql?

?4.相關(guān)代碼展示

4.1. urls層

#讀者
    path("reader/search/", views.reader_search),
    path("reader/classify/", views.reader_classify2),
    path("reader/<int:nbookclass>/classify/", views.reader_classify),
    path("reader/order/", views.reader_order),
    path("reader/borrow/",views.reader_borrow),
    path("reader/first/", views.reader_first),
    path("reader/rule/", views.reader_rule),
    path("popular/book/", views.popular_book),

    #管理員
    #圖書管理
    path("book/list/",views.book_list),
    path("book/add/",views.book_add),
    path("book/<int:nid>/edit/",views.book_edit),
    path("book/<int:nid>/delete/", views.book_delete),
    #用戶管理
    path("user/list/", views.user_list),
    path("user/add/",views.user_add),
    path("user/<int:nid>/edit/",views.user_edit),
    path("user/<int:nid>/delete/", views.user_delete),
    #管理管理員
    path("admin/list/", views.admin_list),
    path("admin/add/",views.admin_add),
    path("admin/<int:nid>/edit/",views.admin_edit),
    path("admin/<int:nid>/delete/", views.admin_delete),

    #違規(guī)
    path("rule/list/", views.rule_list),
    path("rule/add/",views.rule_add),
    path("rule/<int:nid>/edit/",views.rule_edit),
    path("rule/<int:nid>/delete/", views.rule_delete),


    #登錄
    path("login/",views.login),
    path("log/", views.log)

4.2.models層

class reader(models.Model):
    """"讀者表"""
    reader_id=models.IntegerField(verbose_name="學(xué)號")
    password=models.CharField(verbose_name="密碼",max_length=20)
    name=models.CharField(verbose_name="讀者姓名",max_length=10)
    telephone=models.CharField(verbose_name="聯(lián)系電話",max_length=15)
    email=models.CharField(verbose_name="郵箱地址",max_length=30)
    dept=models.CharField(verbose_name="所在院系",max_length=20)
    right=models.IntegerField(verbose_name="借閱權(quán)限(0或1)")



class book(models.Model):
    """"圖書表"""
    bookname=models.CharField(verbose_name="書籍名稱",max_length=20)
    author=models.CharField(verbose_name="書籍作者",max_length=20)
    pubdate=models.DateField(verbose_name="出版日期")
    publish=models.CharField(verbose_name="出版社",max_length=30)
    price = models.DecimalField(verbose_name="價(jià)格", max_digits=7, decimal_places=2, default=0)
    ISBN=models.CharField(verbose_name="書籍ISBN碼",max_length=17)

    bookclass_choices=(
        (1,"哲學(xué)、宗教"),
        (2,"社會科學(xué)總論"),
        (3,"政治、法律"),
        (4,"軍事"),
        (5,"經(jīng)濟(jì)"),

    )
    bookclass=models.IntegerField(verbose_name="學(xué)科類型",choices=bookclass_choices)
    total=models.IntegerField(verbose_name="總量")
    margin=models.IntegerField(verbose_name="余量")

    booktype_choices=(
        (1,"圖書"),
        (2,"期刊")
    )
    booktype=models.IntegerField(verbose_name="藏書類型",choices=booktype_choices)


class admin(models.Model):
    """"管理員用戶表"""
    usernum=models.CharField(verbose_name="管理員賬號",max_length=20)
    password=models.CharField(verbose_name="賬號密碼",max_length=11)
    username=models.CharField(verbose_name="管理員姓名",max_length=10)


class borrow(models.Model):
    """"借閱表"""
    readerid=models.IntegerField(verbose_name="讀者編號")
    bookid=models.IntegerField(verbose_name="圖書編號")
    borrowdate=models.DateField(verbose_name="出借日期")
    due=models.DateField(verbose_name="應(yīng)還日期")


class preconcert(models.Model):
    """"預(yù)約表"""
    readerid = models.IntegerField(verbose_name="讀者編號")
    bookid = models.IntegerField(verbose_name="圖書編號")
    predate = models.DateField(verbose_name="預(yù)約日期")



class break_rule(models.Model):
    """"違規(guī)表"""
    readerid=models.IntegerField(verbose_name="讀者編號")
    bookid=models.IntegerField(verbose_name="圖書編號")
    overdue_choices = (
        (0, "無"),
        (1, "逾期")
    )
    overdue=models.IntegerField(verbose_name="逾期(0/1)",choices=overdue_choices)
    destory_choices = (
        (0, "無"),
        (1, "損壞")
    )
    destory=models.IntegerField(verbose_name="破壞書籍(0/1)",choices=destory_choices)

4.3.views層文章來源地址http://www.zghlxwxcb.cn/news/detail-754204.html

# ###############################管理員###################################

#管理圖書
def book_list(request):
    b = models.book.objects.all()
    return render(request, 'book_list.html', {'b': b})

class BookAdd(forms.ModelForm):
    class Meta:
        model=models.book
        fields=["bookname","author","pubdate","publish","ISBN","price","bookclass","total","margin","booktype"]
        # widgets={
        #     "bookname":forms.TextInput(attrs={"class":"form-control"})
        # }
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        # 循環(huán)找到所有的插件,添加class=“form——control”
        for name, field in self.fields.items():
           # if name=="password":
            #    continue
            field.widget.attrs = {"class": "form-control"}
def book_add(request):
    if request.method == "GET":
        bookadd = BookAdd()
        return render(request, 'book_add.html', {'bookadd': bookadd})
    #用戶POST提交數(shù)據(jù),數(shù)據(jù)校驗(yàn)
    bookadd=BookAdd(data=request.POST)
    if bookadd.is_valid():
        #如果數(shù)據(jù)合法,保存到數(shù)據(jù)庫
        bookadd.save()
        return redirect('/book/list/')
    #校驗(yàn)失敗
    return render(request, 'book_add.html', {'bookadd': bookadd})

def book_edit(request,nid):
    """"編輯書籍"""
    row_object = models.book.objects.filter(id=nid).first()
    if request.method == "GET":
        # 根據(jù)id去數(shù)據(jù)庫獲取要編輯的那一行數(shù)據(jù)
        bookadd = BookAdd(instance=row_object)
        return render(request, "book_edit.html", {'bookadd': bookadd})

    bookadd=BookAdd(data=request.POST,instance=row_object)
    if bookadd.is_valid():
        # 如果數(shù)據(jù)合法,保存到數(shù)據(jù)庫
        bookadd.save()
        return redirect('/book/list/')
    return render(request, "book_edit.html", {'bookadd': bookadd})

def book_delete(request,nid):
    """"刪除圖書"""
    models.book.objects.filter(id=nid).delete()
    return redirect('/book/list/')


#管理用戶
def user_list(request):
    b = models.reader.objects.all()
    return render(request, 'user_list.html', {'b': b})

class User(forms.ModelForm):
    class Meta:
        model=models.reader
        fields=["reader_id","password","name","telephone","email","dept","right"]
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        # 循環(huán)找到所有的插件,添加class=“form——control”
        for name, field in self.fields.items():
           # if name=="password":
            #    continue
            field.widget.attrs = {"class": "form-control"}
def user_add(request):
    if request.method == "GET":
       user=User()
       return render(request, 'user_add.html', {'user': user})
    #用戶POST提交數(shù)據(jù),數(shù)據(jù)校驗(yàn)
    user=User(data=request.POST)
    if user.is_valid():
        #如果數(shù)據(jù)合法,保存到數(shù)據(jù)庫
        user.save()
        return redirect('/user/list/')
    #校驗(yàn)失敗
    return render(request, 'user_add.html', {'user': user})

def user_edit(request,nid):
    """"編輯用戶"""
    row_object = models.reader.objects.filter(id=nid).first()
    if request.method == "GET":
        # 根據(jù)id去數(shù)據(jù)庫獲取要編輯的那一行數(shù)據(jù)
        user = User(instance=row_object)
        return render(request, "user_edit.html", {'user': user})

    user=User(data=request.POST,instance=row_object)
    if user.is_valid():
        # 如果數(shù)據(jù)合法,保存到數(shù)據(jù)庫
        user.save()
        return redirect('/user/list/')
    return render(request, "user_edit.html", {'user': user})

def user_delete(request,nid):
    """"刪除用戶"""
    models.reader.objects.filter(id=nid).delete()
    return redirect('/user/list/')


#管理管理員
def admin_list(request):
    b = models.admin.objects.all()
    return render(request, 'admin_list.html', {'b': b})

class Admin(forms.ModelForm):
    class Meta:
        model=models.admin
        fields=["usernum","password","username"]
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        # 循環(huán)找到所有的插件,添加class=“form——control”
        for name, field in self.fields.items():
           # if name=="password":
            #    continue
            field.widget.attrs = {"class": "form-control"}
def admin_add(request):
    if request.method == "GET":
       admin=Admin()
       return render(request, 'admin_add.html', {'admin': admin})
    #用戶POST提交數(shù)據(jù),數(shù)據(jù)校驗(yàn)
    admin=Admin(data=request.POST)
    if admin.is_valid():
        #如果數(shù)據(jù)合法,保存到數(shù)據(jù)庫
        admin.save()
        return redirect('/admin/list/')
    #校驗(yàn)失敗
    return render(request, 'admin_add.html', {'admin': admin})

def admin_edit(request,nid):
    """"編輯管理員"""
    row_object = models.admin.objects.filter(id=nid).first()
    if request.method == "GET":
        # 根據(jù)id去數(shù)據(jù)庫獲取要編輯的那一行數(shù)據(jù)
        admin =Admin(instance=row_object)
        return render(request, "admin_edit.html", {'admin': admin})

    admin=Admin(data=request.POST,instance=row_object)
    if admin.is_valid():
        # 如果數(shù)據(jù)合法,保存到數(shù)據(jù)庫
        admin.save()
        return redirect('/admin/list/')
    return render(request, "admin_edit.html", {'admin': admin})

def admin_delete(request,nid):
    """"刪除管理員"""
    models.admin.objects.filter(id=nid).delete()
    return redirect('/admin/list/')



#違規(guī)
def rule_list(request):
    b = models.break_rule.objects.all()
    return render(request, 'rule_list.html', {'b': b})

class Rule(forms.ModelForm):
    class Meta:
        model=models.break_rule
        fields=["readerid","bookid","overdue","destory"]
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        # 循環(huán)找到所有的插件,添加class=“form——control”
        for name, field in self.fields.items():
           # if name=="password":
            #    continue
            field.widget.attrs = {"class": "form-control"}
def rule_add(request):
    if request.method == "GET":
       rule=Rule()
       return render(request, 'rule_add.html', {'rule': rule})
    #用戶POST提交數(shù)據(jù),數(shù)據(jù)校驗(yàn)
    rule=Rule(data=request.POST)
    if rule.is_valid():
        #如果數(shù)據(jù)合法,保存到數(shù)據(jù)庫
        rule.save()
        return redirect('/rule/list/')
    #校驗(yàn)失敗
    return render(request, 'rule_add.html', {'rule': rule})

def rule_edit(request,nid):
    """"編輯管理員"""
    row_object = models.break_rule.objects.filter(id=nid).first()
    if request.method == "GET":
        # 根據(jù)id去數(shù)據(jù)庫獲取要編輯的那一行數(shù)據(jù)
        rule=Rule(instance=row_object)
        return render(request, "rule_edit.html", {'rule': rule})

    rule=Rule(data=request.POST,instance=row_object)
    if rule.is_valid():
        # 如果數(shù)據(jù)合法,保存到數(shù)據(jù)庫
        rule.save()
        return redirect('/rule/list/')
    return render(request, "rule_edit.html", {'rule': rule})

def rule_delete(request,nid):
    """"刪除管理員"""
    models.break_rule.objects.filter(id=nid).delete()
    return redirect('/rule/list/')


# ###############################登錄#############################################

""""用戶登錄"""

class LoginForm(forms.Form):
    reader_id=forms.CharField(
        label="學(xué)號",
        widget=forms.TextInput,
        required=True
    )
    password=forms.CharField(
        label="密碼",
        widget=forms.PasswordInput,
        required=True
    )

    def clean_password(self):
        password = self.cleaned_data.get("password")
        return md5(password)

def login(request):
    if request.method=="GET":
        form = LoginForm()
        return render(request, 'login.html', {'form': form})
    form=LoginForm(data=request.POST)
    if form.is_valid():
        #去數(shù)據(jù)庫校驗(yàn)用戶名和密碼是否正確,獲取用戶對象
        admin_object=models.reader.objects.filter(reader_id=request.POST.get('reader_id'),password=request.POST.get('password')).first()
        if not admin_object:
            form.add_error("password","用戶名或密碼錯(cuò)誤!")
            return  render(request,'login.html',{'form':form})

        #網(wǎng)站生成隨機(jī)字符串
        request.session["info"]={'reader_id':admin_object.reader_id,'password':admin_object.password}
        return redirect('/reader/first/')

    return render(request,'login.html',{'form':form})


"""""管理員登錄"""
class LogForm(forms.Form):
    usernum=forms.CharField(
        label="管理員賬號",
        widget=forms.TextInput,
        required=True
    )
    password=forms.CharField(
        label="密碼",
        widget=forms.PasswordInput,
        required=True
    )

    def clean_password(self):
        password = self.cleaned_data.get("password")
        return md5(password)

def log(request):
    if request.method=="GET":
        form = LogForm()
        return render(request, 'log.html', {'form': form})
    form=LogForm(data=request.POST)
    if form.is_valid():
        #去數(shù)據(jù)庫校驗(yàn)用戶名和密碼是否正確,獲取用戶對象
        admin_object=models.admin.objects.filter(usernum=request.POST.get('usernum'),password=request.POST.get('password')).first()
        if not admin_object:
            form.add_error("password","用戶名或密碼錯(cuò)誤!")
            return  render(request,'log.html',{'form':form})

        #網(wǎng)站生成隨機(jī)字符串
        request.session["info"]={'usernum':admin_object.usernum,'password':admin_object.password}
        return redirect('/book/list/')

    return render(request,'log.html',{'form':form})

到了這里,關(guān)于圖書管理系統(tǒng)(python、django)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于Python+MySQL的圖書管理系統(tǒng)

    基于Python+MySQL的圖書管理系統(tǒng)

    目錄 前言 一、開發(fā)環(huán)境與開發(fā)工具 二、系統(tǒng)需求分析 三、系統(tǒng)功能分析 四、數(shù)據(jù)庫設(shè)計(jì) 1、數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì) (1)數(shù)據(jù)流程圖 ?(2)系統(tǒng)ER圖 2、數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì) 3、數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計(jì) 五、數(shù)據(jù)庫應(yīng)用系統(tǒng)各個(gè)模塊代碼設(shè)計(jì) ?????????1、主界面模塊 2、登錄界

    2024年02月02日
    瀏覽(18)
  • Django搭建圖書管理系統(tǒng)01

    Django搭建圖書管理系統(tǒng)01

    Django是一個(gè)使用Python編寫的開源Web應(yīng)用程序框架。它采用了MVC(Model-View-Controller)的軟件設(shè)計(jì)模式,旨在簡化開發(fā)復(fù)雜的Web應(yīng)用程序。 以下是Django框架的一些主要 特點(diǎn) : 強(qiáng)大的開發(fā)工具:Django提供了一套完整的工具集,包括ORM(對象關(guān)系映射)、表單處理、URL路由、模板引

    2024年02月12日
    瀏覽(22)
  • Django項(xiàng)目之圖書管理系統(tǒng)

    1、創(chuàng)建好 Django 項(xiàng)目 2、準(zhǔn)備好數(shù)據(jù)庫 —— 創(chuàng)建數(shù)據(jù)庫:book_system 3、配置項(xiàng)目中的數(shù)據(jù)庫引擎 4、配置靜態(tài)文件的搜索路徑 , 以及在項(xiàng)目的根目錄中創(chuàng)建一個(gè) static 存放靜態(tài)文件數(shù)據(jù)文件夾 5、導(dǎo)入 html 模板文件和靜態(tài)文件數(shù)據(jù)。 1、響應(yīng)用戶注冊頁面的視圖 2、定義用戶數(shù)

    2024年04月29日
    瀏覽(23)
  • 基于python+mysql的可視化圖書管理系統(tǒng)(文末附源碼)

    基于python+mysql的可視化圖書管理系統(tǒng)(文末附源碼)

    該項(xiàng)目主要功能,圖書的增刪查改,借閱證的增、刪;借閱證用于結(jié)借書管理;借閱證分為老師和學(xué)生,numbers為借閱狀態(tài): 項(xiàng)目使用mysql數(shù)據(jù)庫,表為3張: 先看運(yùn)行主界面及功能: ?主頁面實(shí)現(xiàn)代碼: 圖書入庫:分為單本入庫和讀取記事本批量入庫: 單本入庫:實(shí)現(xiàn)對圖

    2024年02月04日
    瀏覽(13)
  • Django圖書商城系統(tǒng)實(shí)戰(zhàn)開發(fā)-實(shí)現(xiàn)商品管理

    在本教程中,我們將使用Django框架來實(shí)現(xiàn)一個(gè)簡單的圖書商城系統(tǒng),并重點(diǎn)討論如何實(shí)現(xiàn)商品管理功能。此外,我們還將介紹如何使用Markdown格式來寫博客,并將其集成到我們的圖書商城系統(tǒng)中。 Django是一個(gè)強(qiáng)大的Python Web框架,被廣泛應(yīng)用于開發(fā)各種類型的Web應(yīng)用程序,包括

    2024年02月12日
    瀏覽(18)
  • Django圖書商城系統(tǒng)實(shí)戰(zhàn)開發(fā)-實(shí)現(xiàn)訂單管理

    在本教程中,我們將繼續(xù)基于Django框架開發(fā)圖書商城系統(tǒng),這次的重點(diǎn)是實(shí)現(xiàn)訂單管理功能。訂單管理是一個(gè)電子商務(wù)系統(tǒng)中非常重要的部分,它涉及到用戶下單、支付、發(fā)貨以及訂單狀態(tài)的管理等方面。通過學(xué)習(xí)本教程,您將了解如何使用Django框架來構(gòu)建強(qiáng)大的訂單管理系

    2024年02月12日
    瀏覽(25)
  • 基于Django圖書管理系統(tǒng) 畢業(yè)設(shè)計(jì)源碼64946

    基于Django圖書管理系統(tǒng) 畢業(yè)設(shè)計(jì)源碼64946

    贈送源碼-畢業(yè)設(shè)計(jì):django圖書管理系統(tǒng) https://www.bilibili.com/video/BV1Dw411J7Uf/?vd_source=72970c26ba7734ebd1a34aa537ef5301 Django圖書管理系統(tǒng) 摘 ?要 大數(shù)據(jù)時(shí)代下,數(shù)據(jù)呈爆炸式地增長。為了迎合信息化時(shí)代的潮流和信息化安全的要求,利用互聯(lián)網(wǎng)服務(wù)于其他行業(yè),促進(jìn)生產(chǎn),已經(jīng)是成為

    2024年01月23日
    瀏覽(23)
  • Django搭建圖書管理系統(tǒng)04:View視圖初探

    Django搭建圖書管理系統(tǒng)04:View視圖初探

    數(shù)據(jù)庫雖然已經(jīng)有了,但是用戶通常只需要這個(gè)龐大數(shù)據(jù)庫中的很小一部分進(jìn)行查看、修改等操作。為此還需要代碼來恰當(dāng)?shù)娜〕霾⒄故緮?shù)據(jù),這一部分代碼就被稱為 視圖 。 Django 中視圖的概念是**「一類具有相同功能和模板的網(wǎng)頁的集合」**。 首先寫一個(gè)最簡單的 視圖函數(shù)

    2024年02月15日
    瀏覽(16)
  • Vue_Django 登錄注冊+圖書管理系統(tǒng)

    點(diǎn)擊查看代碼 點(diǎn)擊查看代碼 點(diǎn)擊查看代碼 點(diǎn)擊查看代碼 點(diǎn)擊查看代碼

    2024年02月08日
    瀏覽(15)
  • Django搭建圖書管理系統(tǒng)03:編寫博客文章的Model模型

    Django搭建圖書管理系統(tǒng)03:編寫博客文章的Model模型

    Django 框架主要關(guān)注的是模型(Model)、模板(Template)和視圖(Views),稱為MTV模式。 它們各自的職責(zé)如下: 層次 職責(zé) 模型(Model),即數(shù)據(jù)存取層 處理與數(shù)據(jù)相關(guān)的所有事務(wù): 如何存取、如何驗(yàn)證有效性、包含哪些行為以及數(shù)據(jù)之間的關(guān)系等。 模板(Template),即業(yè)務(wù)邏

    2024年02月12日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包