1. 程式人生 > >登陸系統後更新導航

登陸系統後更新導航

debug per 指令 pro route 接收 config processor orm

  1. 用上下文處理器app_context_processor定義函數
    1. 獲取session中保存的值
    2. 返回字典
  2. 在父模板中更新導航,插入登錄狀態判斷代碼。、
    1. 註意用{% ... %}表示指令。
    2. {{ }}表示變量
  3. 完成註銷功能。
    1. 清除session
    2. 跳轉













from flask import Flask, render_template, request, redirect, url_for, session from flask_sqlalchemy import SQLAlchemy import config app = Flask(__name__) # 創建Flask對象 app.config.from_object(config) # 關聯config.py文件進來 db = SQLAlchemy(app) # 建立和數據庫的關系映射 class User(db.Model): # 創建類User __tablename__ = ‘user‘ # 類對應的表名user id = db.Column(db.Integer, primary_key=True, autoincrement=True) # autoincrement自增長 username = db.Column(db.String(20), nullable=False) # nullable是否為空 password = db.Column(db.String(20), nullable=False) nickname = db.Column(db.String(20), nullable=True) db.create_all() # 測試是否連接成功 ‘‘‘ # 插入功能 user = User(username=‘15‘,password=‘12‘) db.session.add(user) db.session.commit() # 查詢功能 user=User.query.filter(User.username=="15").first() print(user.username,user.password) # 修改功能 user=User.query.filter(User.username=="15").first() user.password=‘888‘ db.session.commit() # 刪除功能 user=User.query.filter(User.username=="15").first() db.session.delete(user) db.session.commit() ‘‘‘ # session會話連接 # filter()過濾器 # route制定路徑和函數之間的關系 # def定義一個變量 @app.route(‘/‘) # 跳轉首頁。 def daohang(): return render_template(‘daohang.html‘) @app.route(‘/lin/‘) # 跳轉測試。 def lin(): return ‘lin‘ # 跳轉登陸。 @app.route(‘/denglu/‘, methods=[‘GET‘, ‘POST‘]) # methods定義它有兩種請求方式 def denglu(): if request.method == ‘GET‘: return render_template(‘denglu.html‘) else: username = request.form.get(‘user‘) # post請求模式,安排對象接收數據 password = request.form.get(‘pass‘) user = User.query.filter(User.username == username).first() # 作查詢,並判斷 if user: #判斷用戶名 session[‘user‘] = username #利用session添加傳回來的值username session.permanent = True #設置session過期的時間 if user.password == password: #判斷密碼 return redirect(url_for(‘daohang‘)) else: return u‘用戶密碼錯誤‘ else: return u‘用戶不存在,請先註冊‘ @app.context_processor #上下文處理器,定義變量然後在所有模板中都可以調用,類似idea中的model def mycontext(): user = session.get(‘user‘) if user: return{‘username‘:user} else: return{} #返回空字典,因為返回結果必須是dict # 跳轉註銷。 @app.route(‘/logout‘) def logout(): session.clear() return redirect(url_for(‘daohang‘)) # 跳轉註冊。 @app.route(‘/zhuce/‘, methods=[‘GET‘, ‘POST‘]) # methods定義它有兩種請求方式,因為它在表單的請求是post,類似我們在idea中的sava請求模式 def zhuce(): if request.method == ‘GET‘: return render_template(‘zhuce.html‘) else: username = request.form.get(‘user‘) # post請求模式,安排對象接收數據 password = request.form.get(‘pass‘) nickname = request.form.get(‘nickname‘) user = User.query.filter(User.username == username).first() # 作查詢,並判斷 if user: return u‘該用戶已存在‘ else: user = User(username=username, password=password, nickname=nickname) # 將對象接收的數據賦到User類中,即存到數據庫 db.session.add(user) # 執行操作 db.session.commit() return redirect(url_for(‘denglu‘)) # redirect重定向 # 跳轉圖片。 @app.route(‘/tupian/‘) def tupian(): return render_template(‘tupian.html‘) # 跳轉發布。 @app.route(‘/fabu/‘) def fabu(): return render_template(‘fabu.html‘) if __name__ == ‘__main__‘: app.run(debug=True)

登陸系統後更新導航