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

資訊專欄INFORMATION COLUMN

python大佬養成計劃----flask應用

daryl / 1671人閱讀

摘要:將用戶登陸信息綁定數據庫要求將用戶登陸時的信息,發送至后臺與數據庫進行比對,來判斷用戶是否可登陸文件,用來創建遠程連接的類主程序創建連接判斷用戶名是否存在返回的是語句查詢結果的個數如果為,沒有查到。

將用戶登陸信息綁定數據庫

要求將用戶登陸時的信息,發送至后臺與數據庫進行比對,來判斷用戶是否可登陸

#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):
    """用戶注冊時, 添加信息到數據庫中"""
    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"))


判斷用戶是否登陸

某些網站的部分內容,只對已經登陸的用戶顯示,這時候,需要我們判斷用戶是否登陸

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函數代碼里面, 如果登陸, session加入user, passwd兩個key值;
        # run函數代碼里面, 如果注銷, session刪除user, passwd兩個key值;
        # 如果沒有登陸成功, 則跳轉到登陸界面
        if "user" not in session:
            return  redirect("/login/")
        # 如果用戶是登陸狀態, 則訪問哪個路由, 就執行哪個路由對應的視圖函數;
        return  f(*args, **kwargs)
    return  wrapper

# 用戶主頁
@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):
                # 將用戶名和密碼信息存儲到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")

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

# 用戶注冊# http方法: get, post(需要提交用戶名和密碼信息)
@app.route("/register/", methods=["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")

# 系統監控
@app.route("/sysinfo/")
@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異常處理: 類似于捕獲異常
@app.errorhandler(404)
def not_found(e):
    return  render_template("404.html")


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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44867.html

相關文章

  • python大佬養成計劃----Flask藍圖

    摘要:使用藍圖的概念來制作應用程序組件和支持應用程序內部或跨應用程序的通用模式。藍圖可以大大簡化大型應用程序的工作方式,并為擴展提供了在應用程序上注冊操作的中心手段。相反,它是如何構造或擴展應用程序的藍圖。 藍圖 之前我們已經通過代碼了解了一些Flask基本的用法,現在出現一個問題,我們要做的功能越來越多,路由是不是都要放在run文件中呢?例如我們在不同的文件都定義了一些路由,如果想要訪問他...

    tianyu 評論0 收藏0
  • python大佬養成計劃----flask的Session設置

    摘要:對象存儲特定用戶會話所需的屬性及配置信息。當用戶請求來自應用程序的頁時,如果該用戶還沒有會話,則服務器將自動創建一個對象。當會話過期或被放棄后,服務器將終止該會話。因為的是通過加密之后放到了中。 什么是Session? cookie: 客戶端瀏覽器的緩存; session: 服務端服務器的緩存; Session 和 Cookie類似,都是通過字典管理 key-value對。Sessi...

    Gilbertat 評論0 收藏0
  • python大佬養成計劃----Web框架(Flask)

    摘要:是一個編寫的微框架,讓我們可以使用語言快速實現一個網站或服務。使用當你編寫一個函數時,要想每個人都可以使用,需要用到來實現這個目標。 flask flask是一個Python編寫的Web 微框架,讓我們可以使用Python語言快速實現一個網站或Web服務。 使用flask 當你編寫一個函數時,要想每個人都可以使用,需要用到flask來實現這個目標。 導入falsk.Flask類 實...

    Genng 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<