python大佬養成計畫 flask應用

2021-09-13 02:50:16 字數 4679 閱讀 6304

要求將使用者登陸時的資訊,傳送至後台與資料庫進行比對,來判斷使用者是否可登陸

#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 函式根據乙個模式字串和可選的標誌引數生成乙個正規表示式物件。該物件擁有一系列方法用於正規表示式匹配和替換。作用 對於字串進行處理,會檢查這個字串內容是否與你寫的正規表示式匹配 如果匹...