美文网首页python 高级码农成才之路
图书管理系统展示----用户模块代码编写

图书管理系统展示----用户模块代码编写

作者: 幼姿沫 | 来源:发表于2020-09-24 12:41 被阅读0次

一  **** 用户模块展示

任务

用户模块

个人信息展示

密码修改

查询可借图书

查询所借图书

1. 功能

图书相关需要简历图书相关表!

1.1 个人信息展示

后台

userinfo.html页面

流程: 登录后用户资料保存再sesion中--->查询根据id查询

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

def user_info():

'''根据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='查询无结果!')

<!--注册需要的列: 用户名,等级,密码,电话号码-->

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

{#设置隐藏的csrf_token,使用了CSRFProtect保护app之后,即可使用csrf_token()方法#}

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

<h2 class="form-signin-heading">个人资料</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 %}>一级读者

</option>

<option value="2" {% if reader.grand_id==2 %} selected {% endif %}>二级读者

</option>

<option value="3" {% if reader.grand_id==3 %} selected {% endif %}>三级读者

</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. 前端表单校验(验证旧密码是否正确,验证三个表单数据不能为空,新密码和旧密码都相等)

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

2. 后端实现(前端未加验证,后台需要验证数据完整性)

获取数据--》验证数据完整性---》先查再改!--》跳转页面

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

def update_pwd():

if request.method=='GET':

return render_template('update_pwd.html')

else:

# 1.获取数据,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 查询可借图书

图书馆数量大于1的全部显示给用户,并且提供用户查看书籍详细介绍

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 = '密码输入错误!'

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">

{#设置隐藏的csrf_token,使用了CSRFProtect保护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="请输入原

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

<input type="text" name='pwd1' class="form-control" placeholder="请输入新密码"

value="{{ pwd1 }}" required>

<input type="text" name='pwd2' class="form-control" placeholder="请再次输入新

密码" 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>图书相关模型:图书类型,图书

#图书类别 BookType

class BookType(db.Model):

'''读者等级表'''

__tablename__ = "book_type" #表名

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

type_name = db.Column(db.String(50),nullable=True) # 级别名字

# 读者返回来引用 级别

readers =db.relationship('Book', backref='booktype')#指定读者对象,引用级别的别

名!

def __str__(self):

return self.type_name

class Book(db.Model):

'''读者等级表'''

__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) # 书籍数量

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) # 单价

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

bookOutCount =db.Column(db.Integer,nullable=True) #出租次数

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

查询可借图书

图书馆数量大于1的全部显示给用户,并且提供用户查看书籍详细介绍

后台代码

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

def book_list():

# 图书数量大于1的表示可借

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

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

前台展示

<table class="table table-hover">

<thead>1.4 注销

清空session 中的所有数据,跳转到登录页面

<tr>

<th>id</th>

<th>封面</th>

<th>书名</th>

<th>作者</th>

<th>数量</th>

<th>单价</th>

<th>出版社</th>

<th>出租次数</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')

相关文章

网友评论

    本文标题:图书管理系统展示----用户模块代码编写

    本文链接:https://www.haomeiwen.com/subject/abpzyktx.html