圖書管理系統(tǒng)展示----用戶模塊代碼編寫

一? **** 用戶模塊展示

任務(wù)


用戶模塊

個(gè)人信息展示

密碼修改

查詢可借圖書

查詢所借圖書

1. 功能

圖書相關(guān)需要簡歷圖書相關(guān)表!

1.1 個(gè)人信息展示

后臺(tái)

userinfo.html頁面

流程: 登錄后用戶資料保存再sesion中--->查詢根據(jù)id查詢

@users.route('/userinfo', methods=['GET'])

def user_info():

'''根據(jù)id,或用戶名查詢,展示用戶資料'''

id = session.get('user_id')

print(f'用戶id:{id}')

reader = Reader.query.filter_by(id=id).all()

if len(reader)>0:

return render_template('userinfo.html',reader=reader[0])

else:

return render_template('reader.html',msg='查詢無結(jié)果!')

<!--注冊(cè)需要的列: 用戶名,等級(jí),密碼,電話號(hào)碼-->

<form class="form-signin" role="form" method="post" action="/register">

{#設(shè)置隱藏的csrf_token,使用了CSRFProtect保護(hù)app之后,即可使用csrf_token()方法#}

<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">

<h2 class="form-signin-heading">個(gè)人資料</h2>

<input type="text" name='id' class="form-control" value="{{ reader.id }}"

required disabled>

<select name="reader_grade" id="input${1/(\w+)/\u\1/g}" class="form-control"

required="required">1.2 密碼修改

流程

<option value="1" {% if reader.grand_id==1 %} selected {% endif %}>一級(jí)讀者

</option>

<option value="2" {% if reader.grand_id==2 %} selected {% endif %}>二級(jí)讀者

</option>

<option value="3" {% if reader.grand_id==3 %} selected {% endif %}>三級(jí)讀者

</option>

</select>

<input type="text" name='reader_name' class="form-control" placeholder="用戶

名" value="{{ reader.reader_name }}" required>

<input type="text" name='reader_pass' class="form-control" placeholder="密碼"

value="{{ reader.reader_pass }}" required>

<input type="text" name='phone' class="form-control" placeholder="電話"

value="{{ reader.phone }}" required>

</form>

# 完整流程

1. 前端表單校驗(yàn)(驗(yàn)證舊密碼是否正確,驗(yàn)證三個(gè)表單數(shù)據(jù)不能為空,新密碼和舊密碼都相等)

`https://www.cnblogs.com/bignote/p/13307812.html`

2. 后端實(shí)現(xiàn)(前端未加驗(yàn)證,后臺(tái)需要驗(yàn)證數(shù)據(jù)完整性)

獲取數(shù)據(jù)--》驗(yàn)證數(shù)據(jù)完整性---》先查再改!--》跳轉(zhuǎn)頁面

@users.route('/updatepwd', methods=['GET','POST'])

def update_pwd():

if request.method=='GET':

return render_template('update_pwd.html')

else:

# 1.獲取數(shù)據(jù),2,完整性判斷 3.修改

old_pwd = request.form.get('old_pwd')

pwd1 = request.form.get('pwd1')

pwd2 = request.form.get('pwd2')

id = session.get('user_id')修改密碼頁面

1.3 查詢可借圖書

圖書館數(shù)量大于1的全部顯示給用戶,并且提供用戶查看書籍詳細(xì)介紹

reader = Reader.query.filter_by(id=id).first()

# 判斷

if not all([old_pwd,pwd1,pwd2]): # 判斷列表中的所有變量是否都有值! 都有值返

回true

msg = '字段不能為空'

return render_template('update_pwd.html',msg=msg)

else:

# 判斷用戶名是否正確,兩次密碼是否相等

if reader.reader_pass !=old_pwd:

msg = '密碼輸入錯(cuò)誤!'

return render_template('update_pwd.html',

msg=msg,old_pwd=old_pwd,pwd1=pwd1,pwd2=pwd2)

if pwd1 != pwd2:

msg = '密碼不一致!'

return render_template('update_pwd.html',

msg=msg,old_pwd=old_pwd,pwd1=pwd1,pwd2=pwd2)

try:

reader.reader_pass = pwd2

db.session.commit()

return render_template('reader.html', msg='修改成功')

except Exception as e:

msg = '修改失敗'

return render_template('reader.html', msg='修改失敗')

<form class="form-signin" role="form" method="post" action="/updatepwd">

{#設(shè)置隱藏的csrf_token,使用了CSRFProtect保護(hù)app之后,即可使用csrf_token()方法#}

<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">

<h2 class="form-signin-heading">修改密碼</h2>

<input type="text" name='old_pwd' class="form-control" placeholder="請(qǐng)輸入原

生密碼" value="{{ old_pwd }}" required>

<input type="text" name='pwd1' class="form-control" placeholder="請(qǐng)輸入新密碼"

value="{{ pwd1 }}" required>

<input type="text" name='pwd2' class="form-control" placeholder="請(qǐng)?jiān)俅屋斎胄?

密碼" value="{{ pwd2 }}" required>

<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">

<button class="btn btn-lg btn-primary btn-block" type="submit">提交</button>

</div>

</form>圖書相關(guān)模型:圖書類型,圖書

#圖書類別 BookType

class BookType(db.Model):

'''讀者等級(jí)表'''

__tablename__ = "book_type" #表名

id = db.Column(db.Integer,primary_key=True,autoincrement=True) #id 主鍵自增

type_name = db.Column(db.String(50),nullable=True) # 級(jí)別名字

# 讀者返回來引用 級(jí)別

readers =db.relationship('Book', backref='booktype')#指定讀者對(duì)象,引用級(jí)別的別

名!

def __str__(self):

return self.type_name

class Book(db.Model):

'''讀者等級(jí)表'''

__tablename__ = "book" #表名

id = db.Column(db.Integer,primary_key=True,autoincrement=True) #id 主鍵自增

book_name = db.Column(db.String(50),nullable=False) # 用戶名

book_quantity = db.Column(db.Integer,nullable=False) # 書籍?dāng)?shù)量

bookInfo = db.Column(db.String(100),nullable=True) # 書籍說明

book_imgsrc = db.Column(db.String(50), nullable=True) # 書籍封面

author = db.Column(db.String(50), nullable=True) # 作者名字

price = db.Column(db.Integer,nullable=True) # 單價(jià)

bookConcern = db.Column(db.String(50), nullable=True) # 出版社

bookOutCount =db.Column(db.Integer,nullable=True) #出租次數(shù)

bookChar = db.Column(db.String(10), nullable=True) # 書籍首字母

book_type= db.Column(db.Integer,db.ForeignKey('book_type.id')) # 外鍵表名.id

def __str__(self):

return self.book_name

查詢可借圖書

圖書館數(shù)量大于1的全部顯示給用戶,并且提供用戶查看書籍詳細(xì)介紹

后臺(tái)代碼

@users.route('/booklist', methods=['GET'])

def book_list():

# 圖書數(shù)量大于1的表示可借

books = Book.query.filter(Book.book_quantity > 1).all()

return render_template('book.html',books=books)

前臺(tái)展示

<table class="table table-hover">

<thead>1.4 注銷

清空session 中的所有數(shù)據(jù),跳轉(zhuǎn)到登錄頁面

<tr>

<th>id</th>

<th>封面</th>

<th>書名</th>

<th>作者</th>

<th>數(shù)量</th>

<th>單價(jià)</th>

<th>出版社</th>

<th>出租次數(shù)</th>

<th>書籍說明</th>

<th>圖書類別</th>

<th>借閱/歸還</th>

</tr>

</thead>

<tbody>

{% for item in books %}

<tr>

<td>{{ item.id }}</td>

<td>

<img src="/static/images/{{ item.book_imgsrc }}" class="img-

responsive" alt="Image" style="width:60px">

</td>

<td>{{ item.book_name }}</td>

<td>{{ item.author }}</td>

<td>{{ item.book_quantity }}</td>

<td>{{ item.price }}</td>

<td>{{ item.bookConcern }}</td>

<td>{{ item.bookOutCount }}</td>

<td>{{ item.bookInfo }}</td>

<td>{{ item.booktype.type_name }}</td>

<td>

<a type="button" href='#' class="btn btn-primary ">借閱</a>

<a type="button" href='#' class="btn btn-primary ">歸還</a>

</td>

</tr>

{% endfor %}

</tbody>

</table>

@app.route("/logout",methods=['GET'])

def logout():

sesison.clear()

return render_template('index.html')

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容