要求將使用者登陸時的資訊,傳送至後台與資料庫進行比對,來判斷使用者是否可登陸
#config.py檔案,用來建立遠端連線的類
class db:
host = '192.168.1.227'
user= 'root'
passwd = 'sheen'
port = 3306
dbname = 'test'
# 主程式
import pymysql
from config import db
# 1. 建立連線
conn = pymysql.connect(
host=db.host,
user=db.user,
passwd=db.passwd,
port=db.port,
db=db.dbname,
)cur = conn.cursor()
def isuserexist(username):
"""判斷使用者名稱是否存在"""
sqli = "select * from users where name='%s'" %(username)
res = cur.execute(sqli)
# res返回的是sql語句查詢結果的個數;
# 如果為0, 沒有查到。
if res == 0:
return false
else:
return true
def ispasswdok(username, passwd):
sqli = "select * from users where name='%s' and passwd='%s'" %(
username, passwd)
res = cur.execute(sqli)
if res == 0 :
return false
else:
return true
def adduser(username, passwd):
"""使用者註冊時, 新增資訊到資料庫中"""
某些**的部分內容,只對已經登陸的使用者顯示,這時候,需要我們判斷使用者是否登陸
import random
import os
from datetime import datetime
import psutil
from flask import flask, request, render_template, redirect, url_for, abort, session
from models import ispasswdok, isuserexist, adduser
import platform
import functools
def is_login(f):
"""判斷使用者是否登陸的裝飾器"""
@functools.wraps(f)
# run函式**裡面, 如果登陸, session加入user, passwd兩個key值;
# run函式**裡面, 如果登出, session刪除user, passwd兩個key值;
# 如果沒有登陸成功, 則跳轉到登陸介面
if 'user' not in session:
return redirect('/login/')
# 如果使用者是登陸狀態, 則訪問哪個路由, 就執行哪個路由對應的檢視函式;
return f(*args, **kwargs)
# 使用者主頁
def index():
return render_template('index.html')
# 使用者登陸按鈕
def login():
if request.method == 'post':
print(request.form)
# 1. 如何獲取到使用者提交的資訊呢?
user = request.form['user']
passwd = request.form['passwd']
# 2. 判斷使用者名稱和密碼是否正確
if ispasswdok(user, passwd):
# 將使用者名稱和密碼資訊儲存到session中;
session['user'] = user
session['passwd'] = passwd
# 如果登陸成功, 跳轉到主頁;
return redirect(url_for('index'))
else:
# 如果登陸失敗, 重新登陸;
return render_template('login.html', message="使用者名稱或者密碼錯誤")
else:
# 使用者是get請求, 返回登陸的html頁面
# 1. 讀取login.html檔案的內容
# 2. 將讀取的內容返回給使用者介面
return render_template('login.html')
# 使用者登出
def logout():
session.pop('user', none)
session.pop('passwd', none)
# 登出即刪除使用者的session資訊, 登出成功, 跳轉到首頁;
return redirect(url_for('index'))
# return redirect('/')
# 使用者註冊# http方法: get, post(需要提交使用者名稱和密碼資訊)
def register():
# 判斷是否提交註冊資訊;
if request.method == 'post':
user = request.form['user']
passwd = request.form['passwd']
if isuserexist(user):
message = "使用者已經存在"
return render_template('register.html', message=message)
else:
adduser(user, passwd)
return redirect(url_for('login'))
else:
return render_template('register.html')
# 系統監控
@is_login
def sysinfo():
info = platform.uname()
# 獲取開機時間的時間戳, 需要安裝psutil模組;
boot_time = psutil.boot_time()
# 將時間戳轉換為字串格式, 兩種方法, 任選一種l
# print(time.ctime(boot_time))
boot_time = datetime.fromtimestamp(boot_time)
# 獲取當前時間
now_time = datetime.now()
# 獲取時間差
delta_time = now_time - boot_time
delta_time = str(delta_time).split('.')[0]
return render_template('sysinfo.html',
hostname = info.node,
sysname = info.system,
release = info.release,
machine = info.machine,
now_time = now_time,
boot_time = boot_time,
delta_time = delta_time
)# 404異常處理: 類似於捕獲異常
def not_found(e):
return render_template('404.html')
# 丟擲異常
python大佬養成計畫 HTML DOM
dom document object model 譯為文件物件模型,是 html 和 xml 文件的程式設計介面。html dom 定義了訪問和操作 html 文件的標準方法。dom 以樹結構表達 html 文件。html dom 定義了所有 html 元素的物件和屬性,以及訪問它們的方法。換言之...
python大佬養成計畫 Jinja2模板
jinja2是python下乙個被廣泛應用的模版引擎,他的設計思想 於django的模板引擎,並擴充套件了其語法和一系列強大的功能。其中最顯著的乙個是增加了沙箱執行功能和可選的自動轉義功能,這對大多應用的安全性來說是非常重要的。基於unicode並能在python2.4之後的版本執行,包括pytho...
python大佬養成計畫 正規表示式
re regular experssion re 模組使 python 語言擁有全部的正規表示式功能。compile 函式根據乙個模式字串和可選的標誌引數生成乙個正規表示式物件。該物件擁有一系列方法用於正規表示式匹配和替換。作用 對於字串進行處理,會檢查這個字串內容是否與你寫的正規表示式匹配 如果匹...