• 大小: 18KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-18
  • 语言: 其他
  • 标签: python  flask  sqlite  

资源简介

系统源码,可直接实现。对应文档设计在个人上传的另一资源中

资源截图

代码片段和文件信息

import time
from datetime import datetime
#日期相关操作,和time包连用表示、计算借还书日期

from sqlite3 import dbapi2 as sqlite3
#使用SQLite时,它的功能直接被集成在其中,应用会直接访问包含数据的文件
#SQLITE功能简约,小型化,追求最大磁盘效率;MYSQL功能全面,综合化,追求最大并发效率。如果只是单机上用的,数据量不是很大,
# 需要方便移植或者需要频繁读/写磁盘文件的话,就用SQLite比较合适;如果是要满足多用户同时访问,或者是网站访问量比较大是使用MYSQL比较合适.

from flask import Flask request session url_for redirect render_template abort g flash _app_ctx_stack

from hashlib import md5
#这是加密函数,将传进来的函数加密
from werkzeug import check_password_hash generate_password_hash
#数据库中直接存放明文密码是很危险的Werkzeug库中的security能够方便的实现散列密码的计算
#security库中 generate_password_hash(passwordmethod...)函数将原始密码作为输入以字符串形式输出密码的散列值
#check_password_hash(hashpassword)函数检查给出的hash密码与明文密码是否相符



#CONFIGURATION
DATAbase = ‘book.db‘
DEBUG = True
SECRET_KEY = ‘development key‘
MANAGER_NAME = ‘admin‘
MANAGER_PWD = ‘123456‘

# create our little application :
app = Flask(__name__)
app.config.from_object(__name__)

#设置一个名为 FLASKR_SETTINGS 环境变量来设定一个配置文件载入后是否覆盖默认值。
#静默开关告诉 Flask 不去关心这个环境变量键值是否存在。
app.config.from_envvar(‘FLASKR_SETTINGS‘ silent=True)

#数据库连接
def get_db():
top = _app_ctx_stack.top
if not hasattr(top ‘sqlite_db‘):
top.sqlite_db = sqlite3.connect(app.config[‘DATAbase‘])
top.sqlite_db.row_factory = sqlite3.Row
return top.sqlite_db

#这个装饰器的作用就是向请求上下文中注册一个函数,当上下文销毁时调用。
@app.teardown_appcontext
def close_database(exception):
top = _app_ctx_stack.top
if hasattr(top ‘sqlite_db‘):
top.sqlite_db.close()

#初始化数据库
def init_db():
with app.app_context():
db = get_db()
with app.open_resource(‘book.sql‘ mode=‘r‘) as f:
db.cursor().executescript(f.read())
db.commit()

#访问数据库
def query_db(query args=() one=False):
cur = get_db().execute(query args)
rv = cur.fetchall()
return (rv[0] if rv else None) if one else rv

#通过用户名(设置唯一,不可重名)给读者id
def get_user_id(username):
rv = query_db(‘select user_id from users where user_name = ?‘ [username] one=True)
return rv[0] if rv else None


@app.before_request
def before_request():
g.user = None
if ‘user_id‘ in session:
g.user = session[‘user_id‘]

@app.route(‘/‘)
def index():
return render_template(‘index.html‘)

@app.route(‘/manager_login‘ methods=[‘GET‘ ‘POST‘])
def manager_login():
error = None
if request.method == ‘POST‘:
if request.form[‘username‘] != app.config[‘MANAGER_NAME‘]:
error = ‘Invalid username‘
elif request.form[‘password‘] != app.config[‘MANAGER_PWD‘]:
error = ‘Invalid password‘
else:
session[‘user_id‘] = app.config[‘MANAGER_NAME‘]
return redirect(url_for(‘manager‘))
return render_template(‘manager_login.html‘ error = error)

#读者登录
@app.route(‘/reader_login‘ methods=[‘GET‘ ‘POST‘])
def reader_login():
error = None
if request.method == ‘POST‘:
user = query_db(‘‘‘select * from users where user_name = ?‘‘‘
[request.form[‘username‘]] one=True)
if user is None:
error = ‘Invalid username‘
elif not check_password_hash(user[‘pwd‘] request.form[‘password‘]):
error = ‘Invalid password‘
else:
session[‘user_id‘] = user[‘user_n

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-01-24 12:30  BookLibrary-master\
     文件       15601  2018-10-22 16:55  BookLibrary-master\book.py
     文件         883  2018-10-22 11:42  BookLibrary-master\book.sql
     目录           0  2019-01-24 12:30  BookLibrary-master\static\
     文件        3110  2014-03-27 12:28  BookLibrary-master\static\style.css
     目录           0  2019-01-24 12:30  BookLibrary-master\templates\
     文件         280  2018-10-08 15:37  BookLibrary-master\templates\index.html
     文件         434  2018-10-21 13:27  BookLibrary-master\templates\layout.html
     文件         293  2014-03-27 12:28  BookLibrary-master\templates\manager.html
     文件         931  2014-03-27 12:28  BookLibrary-master\templates\manager_book.html
     文件        1063  2014-03-27 12:28  BookLibrary-master\templates\manager_books.html
     文件         822  2014-03-27 12:28  BookLibrary-master\templates\manager_books_add.html
     文件         513  2014-03-27 12:28  BookLibrary-master\templates\manager_books_delete.html
     文件         323  2014-03-27 12:28  BookLibrary-master\templates\manager_index.html
     文件         604  2014-03-27 12:28  BookLibrary-master\templates\manager_login.html
     文件         937  2014-03-27 12:28  BookLibrary-master\templates\manager_modify.html
     文件         946  2014-03-27 12:28  BookLibrary-master\templates\manager_user_modify.html
     文件         554  2014-03-27 12:28  BookLibrary-master\templates\manager_userinfo.html
     文件         583  2014-03-27 12:28  BookLibrary-master\templates\manager_users.html
     文件         416  2018-10-11 14:34  BookLibrary-master\templates\reader.html
     文件         977  2014-03-27 12:28  BookLibrary-master\templates\reader_book.html
     文件         706  2014-03-27 12:28  BookLibrary-master\templates\reader_histroy.html
     文件         446  2014-03-27 12:28  BookLibrary-master\templates\reader_info.html
     文件         681  2014-03-27 12:28  BookLibrary-master\templates\reader_login.html
     文件         923  2014-03-27 12:28  BookLibrary-master\templates\reader_modify.html
     文件        1382  2014-03-27 12:28  BookLibrary-master\templates\reader_query.html
     文件         932  2014-03-27 12:28  BookLibrary-master\templates\register.html

评论

共有 条评论