国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python大佬養(yǎng)成計(jì)劃----flask應(yīng)用

daryl / 1680人閱讀

摘要:將用戶登陸信息綁定數(shù)據(jù)庫(kù)要求將用戶登陸時(shí)的信息,發(fā)送至后臺(tái)與數(shù)據(jù)庫(kù)進(jìn)行比對(duì),來(lái)判斷用戶是否可登陸文件,用來(lái)創(chuàng)建遠(yuǎn)程連接的類主程序創(chuàng)建連接判斷用戶名是否存在返回的是語(yǔ)句查詢結(jié)果的個(gè)數(shù)如果為,沒有查到。

將用戶登陸信息綁定數(shù)據(jù)庫(kù)

要求將用戶登陸時(shí)的信息,發(fā)送至后臺(tái)與數(shù)據(jù)庫(kù)進(jìn)行比對(duì),來(lái)判斷用戶是否可登陸

#config.py文件,用來(lái)創(chuàng)建遠(yuǎn)程連接的類
class DB:
    HOST = "192.168.1.227"
    USER= "root"
    PASSWD = "sheen"
    PORT = 3306
    DBNAME = "test"
# 主程序
import pymysql
from config import DB
# 1. 創(chuàng)建連接
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語(yǔ)句查詢結(jié)果的個(gè)數(shù);
    #  如果為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):
    """用戶注冊(cè)時(shí), 添加信息到數(shù)據(jù)庫(kù)中"""
    sqli = "insert into users(name, passwd) values("%s", "%s")" %(
        username, passwd)
    try:
        res = cur.execute(sqli)
        conn.commit()
    except Exception as e:
        conn.rollback()
        return e
# cur.close()
# conn.close()
if __name__ == "__main__":
    addUser("root", "root")
    print(isUserExist("root"))
    print(isPasswdOk("root", "root"))


判斷用戶是否登陸

某些網(wǎng)站的部分內(nèi)容,只對(duì)已經(jīng)登陸的用戶顯示,這時(shí)候,需要我們判斷用戶是否登陸

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
app = Flask(__name__)
app.config["SECRET_KEY"] =  random._urandom(24)

import  functools

def is_login(f):
    """判斷用戶是否登陸的裝飾器"""
    @functools.wraps(f)
    def wrapper(*args, **kwargs):
        # run函數(shù)代碼里面, 如果登陸, session加入user, passwd兩個(gè)key值;
        # run函數(shù)代碼里面, 如果注銷, session刪除user, passwd兩個(gè)key值;
        # 如果沒有登陸成功, 則跳轉(zhuǎn)到登陸界面
        if "user" not in session:
            return  redirect("/login/")
        # 如果用戶是登陸狀態(tài), 則訪問(wèn)哪個(gè)路由, 就執(zhí)行哪個(gè)路由對(duì)應(yīng)的視圖函數(shù);
        return  f(*args, **kwargs)
    return  wrapper

# 用戶主頁(yè)
@app.route("/")
def index():
    return render_template("index.html")

# 用戶登陸按鈕
@app.route("/login/", methods=["GET", "POST"])
def login():
    if request.method == "POST":
        print(request.form)
        # 1. 如何獲取到用戶提交的信息呢?
        user = request.form["user"]
        passwd = request.form["passwd"]

        # 2. 判斷用戶名和密碼是否正確

        if isPasswdOk(user, passwd):
                # 將用戶名和密碼信息存儲(chǔ)到session中;
                session["user"] = user
                session["passwd"] = passwd
                # 如果登陸成功, 跳轉(zhuǎn)到主頁(yè);
                return redirect(url_for("index"))
        else:
            # 如果登陸失敗, 重新登陸;
            return  render_template("login.html", message="用戶名或者密碼錯(cuò)誤")

    else:
        # 用戶是GET請(qǐng)求, 返回登陸的html頁(yè)面
        # 1. 讀取login.html文件的內(nèi)容
        # 2. 將讀取的內(nèi)容返回給用戶界面
        return render_template("login.html")

# 用戶注銷
@app.route("/logout/")
def logout():
    session.pop("user", None)
    session.pop("passwd", None)
    # 注銷即刪除用戶的session信息, 注銷成功, 跳轉(zhuǎn)到首頁(yè);
    return  redirect(url_for("index"))
    # return  redirect("/")

# 用戶注冊(cè)# http方法: get, post(需要提交用戶名和密碼信息)
@app.route("/register/", methods=["GET", "POST"])
def register():
    # 判斷是否提交注冊(cè)信息;
    if request.method == "POST":
        user = request.form["user"]
        passwd = request.form["passwd"]
        if isUserExist(user):
            message = "用戶已經(jīng)存在"
            return  render_template("register.html", message=message)
        else:
            addUser(user, passwd)
            return  redirect(url_for("login"))
    else:
        return  render_template("register.html")

# 系統(tǒng)監(jiān)控
@app.route("/sysinfo/")
@is_login
def sysinfo():
    info = platform.uname()
    # 獲取開機(jī)時(shí)間的時(shí)間戳, 需要安裝psutil模塊;
    boot_time = psutil.boot_time()
    # 將時(shí)間戳轉(zhuǎn)換為字符串格式, 兩種方法, 任選一種l
    # print(time.ctime(boot_time))
    boot_time = datetime.fromtimestamp(boot_time)

    # 獲取當(dāng)前時(shí)間
    now_time = datetime.now()

    # 獲取時(shí)間差
    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異常處理: 類似于捕獲異常
@app.errorhandler(404)
def not_found(e):
    return  render_template("404.html")


# 拋出異常
@app.route("/user//")
def user(user_id):
    if 0

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/44867.html

相關(guān)文章

  • python大佬養(yǎng)成計(jì)劃----Flask藍(lán)圖

    摘要:使用藍(lán)圖的概念來(lái)制作應(yīng)用程序組件和支持應(yīng)用程序內(nèi)部或跨應(yīng)用程序的通用模式。藍(lán)圖可以大大簡(jiǎn)化大型應(yīng)用程序的工作方式,并為擴(kuò)展提供了在應(yīng)用程序上注冊(cè)操作的中心手段。相反,它是如何構(gòu)造或擴(kuò)展應(yīng)用程序的藍(lán)圖。 藍(lán)圖 之前我們已經(jīng)通過(guò)代碼了解了一些Flask基本的用法,現(xiàn)在出現(xiàn)一個(gè)問(wèn)題,我們要做的功能越來(lái)越多,路由是不是都要放在run文件中呢?例如我們?cè)诓煌奈募级x了一些路由,如果想要訪問(wèn)他...

    tianyu 評(píng)論0 收藏0
  • python大佬養(yǎng)成計(jì)劃----flask的Session設(shè)置

    摘要:對(duì)象存儲(chǔ)特定用戶會(huì)話所需的屬性及配置信息。當(dāng)用戶請(qǐng)求來(lái)自應(yīng)用程序的頁(yè)時(shí),如果該用戶還沒有會(huì)話,則服務(wù)器將自動(dòng)創(chuàng)建一個(gè)對(duì)象。當(dāng)會(huì)話過(guò)期或被放棄后,服務(wù)器將終止該會(huì)話。因?yàn)榈氖峭ㄟ^(guò)加密之后放到了中。 什么是Session? cookie: 客戶端瀏覽器的緩存; session: 服務(wù)端服務(wù)器的緩存; Session 和 Cookie類似,都是通過(guò)字典管理 key-value對(duì)。Sessi...

    Gilbertat 評(píng)論0 收藏0
  • python大佬養(yǎng)成計(jì)劃----Web框架(Flask)

    摘要:是一個(gè)編寫的微框架,讓我們可以使用語(yǔ)言快速實(shí)現(xiàn)一個(gè)網(wǎng)站或服務(wù)。使用當(dāng)你編寫一個(gè)函數(shù)時(shí),要想每個(gè)人都可以使用,需要用到來(lái)實(shí)現(xiàn)這個(gè)目標(biāo)。 flask flask是一個(gè)Python編寫的Web 微框架,讓我們可以使用Python語(yǔ)言快速實(shí)現(xiàn)一個(gè)網(wǎng)站或Web服務(wù)。 使用flask 當(dāng)你編寫一個(gè)函數(shù)時(shí),要想每個(gè)人都可以使用,需要用到flask來(lái)實(shí)現(xiàn)這個(gè)目標(biāo)。 導(dǎo)入falsk.Flask類 實(shí)...

    Genng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<