基于flask的闪现、g对象、蓝图
创始人
2025-01-15 19:03:30
0

【 一 】闪现(flash)

# 1 flask中得闪现存放数据的地方,一旦取了,数据就没了 	-实现跨请求间传递数据 # 2 django中有没有类似的东西? 	message 消息框架           # 3 基本使用 	1 设置:flash('欢迎你、欢迎来到澳门赌场!!!')     2 取:get_flashed_messages()      # 4 根据标签设置和取值 	flash('超时错误',category="x1") 	get_flashed_messages(category_filter=['x1']) 
  • app.py

from flask import Flask # 定义HTTP的方法 put、get、post等 from flask.views import MethodView # Flask(启动Web应用)、render_template(响应HTML模板)、redirect(重定向)、flash(接收消息)、get_flashed_messages from flask import Flask, request, render_template, redirect, flash, get_flashed_messages # 启动Web应用 app = Flask(__name__)  app.debug = True # 要用闪现,必须指定secret_key--》闪现内部使用session实现的 app.secret_key = 'asdfasdf'   # 用endpoint进行反向解析的 @app.route('/login', endpoint='login', methods=['GET', 'POST']) def login():     if request.method == 'GET':         return render_template('login.html')     else:         username = request.form.get('username')         password = request.form.get('password')         if username == 'jing' and password == '123':             # 使用闪现,放个数据             flash('欢迎你:132456')             flash('ss')             flash('ee')             return redirect('/')         else:             flash('用户名密码错误')             return redirect('/')   @app.route('/') def index():     # 从闪现中取出数据     # print(get_flashed_messages())     return render_template('index.html')   if __name__ == '__main__':     app.run() 
  • index.html

                 登录   

亚洲最大交友平台

Bootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。目前,Bootstrap最新版本为5.0


{{error}}
  • index.html

            Title   

{{get_flashed_messages()[0]}}

  • 这些信息要等登陆成功之后才会出现

image-20240613214645914

django中使用

################ 1 基础配置############ INSTALLED_APPS = [     ...     'django.contrib.messages',     ... ] # 在django setting.py 取消注释的message app MIDDLEWARE = [     ...     'django.contrib.messages.middleware.MessageMiddleware',     ... ] # 在django setting.py 取消注释的message 的中间件 TEMPLATES = [     {         'BACKEND': 'django.template.backends.django.DjangoTemplates',         'DIRS': [],         'APP_DIRS': True,         'OPTIONS': {             'context_processors': [                 ...                 'django.contrib.messages.context_processors.messages',             ],         }     } ] ################ 2 设置存放位置############ MESSAGE_STORAGE = "django.contrib.messages.storage.session.SessionStorage"   ################ 3 放入值############ #添加message from django.contrib import messages def concel_order(request):     messages.add_message(request, messages.SUCCESS, "删除成功1")     messages.add_message(request, messages.SUCCESS, "删除成功2")          return redirect("/order/control/")  ################ 4 视图函数中取############ # 在视图函数中添加messages模块 # 再通过messages.add_message导入提示信息 # 在视图函数中import get_messages模块获取添加的提示信息 def control_order(request):     if request.method == "GET":         from django.contrib.messages.api import get_messages         m1 = get_messages(request)         print(m1)          ################ 5 模板中取############ # 在html模板中添加for循环拿到message 
{% for obj in messages %}
    {{ obj.message }}
{% endfor %}

【 二 】g对象

  • g对象就是一个全局对象
# 1 g 对象,是一个全局对象--》global的缩写,global是关键字,不能用来做变量,所以它叫了g # 2 g在当次请求中,可以放入值,可以取出值 	-我们使用:index 视图函数---》内部又调用了add--》add()又调用了aa()-->如果有参数,需要依次传入     -通过g对象,我们可以把参数放到g中,以后直接从g中取即可      # 3 g和request对象都在当次请求中有效 	-我们一般不直接把数据放到request对象中     -因为可能会污染数据 # 4 django中没有g 

具体示例

from flask import Flask, g, request  app = Flask(__name__)  app.debug = True app.secret_key = 'asydiasdugiausdg'   @app.before_request def before():     # request.full_path 这里代表是一个完整的路径     if 'index' in request.full_path:         g.name = '你谈是'         request.name= g.name     else:         g.name = '其他'         request.name = '其他' def add():     print(g.name)     print(request.name)     b = g.name + "nb"     return b   @app.route('/index') def index():     print(g.name)     res = add()     return 'hello'  + res   @app.route('/home') def home():     print(g.name)     return 'home'   if __name__ == '__main__':     app.run()  

image-20240613220724881

image-20240613220747437

image-20240613220758047

g和session区别

# g 只在当前请求中有效 # session可以跨 请求 # 闪现可以跨请求--》本质就是session--》用一次就没了 

【 三 】蓝图

  • 目录结构

-flask_lantu 	-views 	  -models.py     -__init__.py     -lan.py 

models.py

from flask import Flask,Blueprint   # 创建一个名为 'user' 的蓝图 order_blue = Blueprint('user', __name__)  # 1 实例化得到对象 app = Flask(__name__)   @order_blue.before_request def before():     print('来了')   @order_blue.route('/order') def order():     return 'order-order-order'  # 2 注册路由--》写视图函数 @order_blue.route('/') def index():     # 3 返回给前端字符串     return 'hello world'   if __name__ == '__main__':     # 运行app,默认运行在5000     app.run() 

__init__.py

  • 就是进行注册

from flask import Flask  app = Flask(__name__, template_folder='../templates')    from .views.models import order_blue   app.register_blueprint(order_blue) 

lan.py

from flask import Flask, Blueprint  app = Flask(__name__, template_folder='../templates')  from views.models import order_blue  app.register_blueprint(order_blue)  if __name__ == '__main__':     app.run()  
flask-session

相关内容

热门资讯

专业讨论!德扑之星真破解套路(... 专业讨论!德扑之星真破解套路(辅助挂)软件透明挂(有挂了解)-哔哩哔哩;人气非常高,ai更新快且高清...
每日必看!智星德州菠萝外挂检测... 每日必看!智星德州菠萝外挂检测(辅助挂)软件透明挂(有挂教学)-哔哩哔哩1、玩家可以在智星德州菠萝外...
透视透明挂!轰趴十三水有后台(... 轰趴十三水有后台赢率提升策略‌;透视透明挂!轰趴十三水有后台(辅助挂)软件透明挂(有挂详情)-哔哩哔...
发现玩家!德扑ai助手软件(辅... 发现玩家!德扑ai助手软件(辅助挂)透视辅助(有挂教学)-哔哩哔哩;玩家在德扑ai助手软件中需先进行...
一分钟了解!x-poker辅助... 一分钟了解!x-poker辅助软件(辅助挂)辅助透视(有挂攻略)-哔哩哔哩1、每一步都需要思考,不同...
一分钟揭秘!德州最新辅助器(辅... 一分钟揭秘!德州最新辅助器(辅助挂)透视辅助(有挂攻略)-哔哩哔哩;德州最新辅助器最新版本免费下载安...
玩家攻略推荐!德州辅助(辅助挂... 玩家攻略推荐!德州辅助(辅助挂)辅助透视(有挂了解)-哔哩哔哩是由北京得德州辅助黑科技有限公司精心研...
揭秘真相!pokernow德州... 《揭秘真相!pokernow德州(辅助挂)辅助透视(有挂介绍)-哔哩哔哩》 pokernow德州软件...
五分钟了解!德州之星辅助器(辅... 五分钟了解!德州之星辅助器(辅助挂)辅助透视(有挂透明)-哔哩哔哩1、很好的工具软件,可以解锁游戏的...
推荐一款!pokermaste... 1、推荐一款!pokermaster有外挂(辅助挂)透视辅助(有挂教学)-哔哩哔哩;详细教程。2、p...